535
技术社区[云栖]
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