Android 解决使用Log打印日志的时候中文是乱码(unicode)
2016-11-25 17:23
621 查看
在开发APP过程中经常会打印出网络获取的数据,但这时你会发现打印出来的log是Unicode格式:
看不出是什么中文内容,希望下面方法可以帮助大家解决问题。
下面方法在处理时会影响小小性能,见意控制使用!
测试DEMO:
OUTPUT:
原理:
Unicode 编码转UTF-8
Unicode它用两个字节来编码一个字符, 比如汉字”经”的编码是0x7ECF,注意字符码一般用十六进制来 表示。
所以获取到16进制之后转成10进制再强转char类型即可!
(char) Integer.parseInt(hex, 16)
{"state":{"code":10200,"msg":"\u83b7\u53d6\u6210\u529f"},"data":{}}
看不出是什么中文内容,希望下面方法可以帮助大家解决问题。
下面方法在处理时会影响小小性能,见意控制使用!
public static String unicodeToUTF_8(String src) { if (null == src) { return null; } System.out.println("src: " + src); StringBuilder out = new StringBuilder(); for (int i = 0; i < src.length();) { char c = src.charAt(i); if (i + 6 < src.length() && c == '\\' && src.charAt(i + 1) == 'u') { String hex = src.substring(i + 2, i + 6); try { out.append((char) Integer.parseInt(hex, 16)); } catch (NumberFormatException nfe) { nfe.fillInStackTrace(); } i = i + 6; } else { out.append(src.charAt(i)); ++i; } } return out.toString(); }
测试DEMO:
package cyy.demo; public class Test { private static final String SRC = "\"state\":{\"code\":10200,\"msg\":\"\\u83b7\\u53d6\\u6210\\u529f\"},\"data\":{}}"; public static void main(String[] args) { String out = unicodeToUTF_8(SRC); System.out.println("out: " + out); } }
OUTPUT:
src: "state":{"code":10200,"msg":"\u83b7\u53d6\u6210\u529f"},"data":{}} out: "state":{"code":10200,"msg":"获取成功"},"data":{}}
原理:
Unicode 编码转UTF-8
Unicode它用两个字节来编码一个字符, 比如汉字”经”的编码是0x7ECF,注意字符码一般用十六进制来 表示。
所以获取到16进制之后转成10进制再强转char类型即可!
(char) Integer.parseInt(hex, 16)
相关文章推荐
- 我的Android进阶之旅------>Android使用cmd窗口进行adb logcat时出现中文乱码问题的解决办法
- spring boot 使用logback 控制台打印日志中文乱码解决
- Python3 使用 logging 模块输出日志中的中文乱码解决办法
- Android第一行代码阅读笔记001 主要文件夹介绍、activity的注册、资源引用的方法、Log日志打印的使用
- 解决爱加密加固之后使用xposed hook的时候log打印不出来的问题
- Android 使用JSON格式与服务器交互 中文乱码问题解决
- 使用log4j2打印Log,log4j不能打印日志信息,log4j2不能打印日志信息,log4j和logj2,idea控制台信息乱码(文末)
- 在Android应用中使用Log打印日志信息
- android studio logcat 中文乱码解决
- 解决爱加密加固之后使用xposed hook的时候log打印不出来的问题
- 关于android studio log日志打印信息不全的原因以及解决方法
- 02_JNI中Java代码调用C代码,Android中使用log库打印日志,javah命令的使用,Android.mk文件的编写,交叉编译
- 02_JNI中Java代码调用C代码,Android中使用log库打印日志,javah命令的使用,Android.mk文件的编写,交叉编译
- Android中使用HttpConnection发送中文到服务器端乱码解决办法
- MySql 查询语句中包含中文,日志打印为乱码问题解决
- IntelliJ 搜索框、log日志中文乱码解决方法
- 【坑】使用PrintWrite返回JSON的时候中文乱码的解决办法
- Android中吐司Toast、打印日志Log的使用
- python2.7使用logging模块记日志,中文记入后乱码解决办法
- [置顶] tomcat控制台日志打印中文乱码问题解决