android中Parcel中文亂碼的解決:巧用十六進製
android中Parcel中文亂碼的解決:巧用十六進製
把需要傳遞的中文轉化成十六進製的字符串。
str的格式:
"48", "65", "6C", "6C", "6F", "CD", "FB", "BE", "A9", "D7", "E9"
private String hex2String(String str) { Log.d(LOG_TAG, "hex2String str = " + str); if(str.indexOf(",") == -1){ return str; } String[] strArray = str.split(","); // String[] strArray = {"48", "65", "6C", "6C", "6F", "CD", "FB", "BE", "A9", "D7", "E9"}; StringBuilder builder = new StringBuilder(); for (int i = 0; i < strArray.length; i++) { char ch = (char) Integer.parseInt(strArray[i], 16); builder.append(new Character(ch).toString()); } try { return new String(builder.toString().getBytes("ISO-8859-1"),"GBK"); } catch (UnsupportedEncodingException e) { return null; } }
參考代碼:
package cn.itcast.string; public class Hex2String { public static void main(String[] args) { // TODO Auto-generated method stub String str = "I love 中國"; String s = toHexString(str); System.out.println(s); System.out.println(toStringHex(s)); } //轉化字符串為十六進製編碼 public static String toHexString(String str){ String s = ""; for (int i = 0; i < str.length(); i++) { char ch = str.charAt(i); s += Integer.toHexString(ch) + ","; } s = s.substring(0, s.length()-1); return s; } //十六進製編碼轉化為字符串 public static String toStringHex(String str){ String[] strArray = str.split(","); StringBuilder sb = new StringBuilder(); for (int i = 0; i < strArray.length; i++) { char ch = (char) Integer.parseInt(strArray[i], 16); sb.append(Character.toString(ch)); } return sb.toString(); } }
最後更新:2017-04-02 06:52:15