android中Parcel中文乱码的解决:巧用十六进制
16lz
2021-01-23
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 stubString 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();}}
更多相关文章
- Android 3.0 r1中文API文档(103) —— InputMethodManager [输入
- android studio 中文乱码,字体优化解决之道
- Android中文API(122) —— AudioRecord
- Android 中文 API(123) ―― AbsListView(一)
- android api 中文 (73)―― AdapterView
- Android 中文API (70) ―― BluetoothDevice[蓝牙]
- android 设置中文字体。。。。
- Android 3.0 r1 API中文文档(108) ―― ExpandableListAdapter