在我们开发中,很多时候会遇见各种编码乱码的问题,其实这都是编码不一致的问题,如果你懂得了关于URLEncoder的编码和URLDecode解码,那么问题就会随之消失!
下面我们看看关于编码的代码:
package com.zhagnke.test; import java.beans.Encoder; import java.net.URLDecoder; import java.net.URLEncoder; /** * 关于URLEncoder的编码和URLDecode解码 * @author spring sky * QQ 840950105 * Email vipa1888@163.com * My name:石明政 * */ public class EncodeUtil { public static void main(String[] args)throws Exception { /** * 编码 * * 如果字符a-z A-Z 0-9 或者_ ,他们不会被编码 */ String str1 = "abcdefghijklmnopqrstyvwxyz"; String str1_1 = URLEncoder.encode(str1, "utf-8"); System.out.println("str1_1="+str1_1); /** * 编码 * * 非字符a-z A-Z 0-9 或者_ ,他们被编码 */ String str2 = "中国人民共和国"; String str2_2 = URLEncoder.encode(str2, "utf-8"); System.out.println("str2_2="+str2_2); System.out.println("----------------------------------"); /** * 解码 * */ URLDecoder ud = new URLDecoder(); System.out.println(ud.decode(str1, "utf-8")); System.out.println(ud.decode(str2, "utf-8")); System.out.println("-----------------------------------"); /** * 解码 * 如果字符a-z A-Z 0-9 或者_,他们因为没有编译,所以不会被解密 * 如果是%E4%B8%AD%E5%9B%BD%E4%BA%BA%E6%B0%91%E5%85%B1%E5%92%8C%E5%9B%BD,他们会被解码为文字 */ System.out.println(ud.decode(str1_1,"utf-8")); System.out.println(ud.decode(str2_2,"utf-8")); System.out.println("-----------------------------------"); /** * 如果解密不是原本的字符类型(utf8-----gbk) */ System.out.println(ud.decode(str1_1,"gbk")); System.out.println(ud.decode(str2_2,"gbk")); System.out.println("-----------------------------------"); /** * 如果解密不是原本的字符类型(utf8-----ISO-8859-1) */ System.out.println(ud.decode(str1_1,"ISO-8859-1")); System.out.println(ud.decode(str2_2,"ISO-8859-1")); } }
上面是代码,里面我的注释已经写了,如果有不明白的,可以找我,再看看运行后的效果!
str1_1=abcdefghijklmnopqrstyvwxyz str2_2=%E4%B8%AD%E5%9B%BD%E4%BA%BA%E6%B0%91%E5%85%B1%E5%92%8C%E5%9B%BD ---------------------------------- abcdefghijklmnopqrstyvwxyz 中国人民共和国 ----------------------------------- abcdefghijklmnopqrstyvwxyz 中国人民共和国 ----------------------------------- abcdefghijklmnopqrstyvwxyz 涓浗浜烘皯鍏卞拰鍥� ----------------------------------- abcdefghijklmnopqrstyvwxyz ä¸å½äººæ°å ±åå½
从上面,我们可以看出,如果编码为非ASCII,在编码中都会编译为16进制的编码,我们只需要为编译后的16进制代码解密就可以了!所以在生活中,如果遇见乱码的问题,不要慌,先看看数据库中的编码格式是否和程序中的相一致,只有编码一直才不会出现乱码的情况!
学习在于积累!