在我們開發中,很多時候會遇見各種編碼亂碼的問題,其實這都是編碼不一致的問題,如果你懂得了關於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=abcdefghijklmnopqrstyvwxyzstr2_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進位代碼解密就可以了!所以在生活中,如果遇見亂碼的問題,不要慌,先看看資料庫中的編碼格式是否和程式中的相一致,只有編碼一直才不會出現亂碼的情況!
學習在於積累!