1. 程式人生 > >實現UTF-8、UCS2編碼和解碼

實現UTF-8、UCS2編碼和解碼

    public void encodeDecode(){
        String str = "測試字元轉換";
        try {
            //使用 URLEncoder、URLDecoder方法實現
            String strGBK = URLEncoder.encode(str, "GBK");//把str字串以GBK的形式編碼
            Log.i("michael","strGBK = "+strGBK); //輸出編碼後的類容
            Log.i("michael","strGBK decode = "+URLDecoder.decode(strGBK, "GBK"
)); //以GBK的形式解碼 String strUCS2 = URLEncoder.encode(str, "UnicodeBigUnmarked"); Log.i("michael","strUCS2 = "+strUCS2); Log.i("michael","strUCS2 decode = "+URLDecoder.decode(strUCS2, "UnicodeBigUnmarked")); String strUTF8 = URLEncoder.encode(str, "UTF-8"
); Log.i("michael","strUTF8 = "+strUTF8); Log.i("michael","strUTF8 decode = "+URLDecoder.decode(strUTF8, "UTF-8")); //使用getBytes編碼,使用 new String解碼 byte[] middleUCS2 = str.getBytes("UnicodeBigUnmarked"); //把str字串以UCS2的方式編碼 Log.i("michael","middleUCS2 bytesToHexStr = "
+bytesToHexStr(middleUCS2)); Log.i("michael","middleUCS2 = bytesToHexString "+bytesToHexString(middleUCS2)); String UCSdecode = new String(middleUCS2,"UnicodeBigUnmarked"); //以UCS2的方式解碼 Log.i("michael","UCSdecode = "+UCSdecode); } catch (UnsupportedEncodingException e) { e.printStackTrace(); } } private String bytesToHexStr(byte[] b){ //轉換成16進位制 if (b == null) return ""; StringBuffer strBuffer = new StringBuffer(b.length * 3); for (int i = 0; i < b.length; i++){ strBuffer.append(Integer.toHexString(b[i] & 0xff)); strBuffer.append(" "); } return strBuffer.toString(); } public static String bytesToHexString(byte[] bytes) { //轉換成16進位制 if (bytes == null) return null; StringBuilder ret = new StringBuilder(2 * bytes.length); for (int i = 0; i < bytes.length; i++) { int b; b = 0x0f & (bytes[i] >> 4); ret.append("0123456789abcdef".charAt(b)); b = 0x0f & bytes[i]; ret.append("0123456789abcdef".charAt(b)); } return ret.toString(); }

Log資訊

04-20 13:30:42.965 6966-6966/com.android.yangtao.myapplication1231233 I/michael: strGBK = %B2%E2%CA%D4%D7%D6%B7%FB%D7%AA%BB%BB
04-20 13:30:42.965 6966-6966/com.android.yangtao.myapplication1231233 I/michael: strGBK decode = 測試字元轉換
04-20 13:30:42.966 6966-6966/com.android.yangtao.myapplication1231233 I/michael: strUCS2 = %6D%4B%8B%D5%5B%57%7B%26%8F%6C%63%62
04-20 13:30:42.966 6966-6966/com.android.yangtao.myapplication1231233 I/michael: strUCS2 decode = 測試字元轉換
04-20 13:30:42.966 6966-6966/com.android.yangtao.myapplication1231233 I/michael: strUTF8 = %E6%B5%8B%E8%AF%95%E5%AD%97%E7%AC%A6%E8%BD%AC%E6%8D%A2
04-20 13:30:42.966 6966-6966/com.android.yangtao.myapplication1231233 I/michael: strUTF8 decode = 測試字元轉換
04-20 13:30:42.967 6966-6966/com.android.yangtao.myapplication1231233 I/michael: middleUCS2 bytesToHexStr = 6d 4b 8b d5 5b 57 7b 26 8f 6c 63 62 
04-20 13:30:42.967 6966-6966/com.android.yangtao.myapplication1231233 I/michael: middleUCS2 = bytesToHexString 6d4b8bd55b577b268f6c6362
04-20 13:30:42.967 6966-6966/com.android.yangtao.myapplication1231233 I/michael: UCSdecode = 測試字元轉換