解决java转义json出现\u0000 等乱码的问题
今天遇到了string乱码怎么都去不了的问题,最后的解决方法很简单,也不是方法的问题,是数据过滤之后进行的数据处理,在处理阶段生成了乱码,难怪我在过滤阶段怎么去都去不掉- -,不过花时间知道了很多处理乱码的方法,在这里记录一下。
在将中文数据转成json格式的时候,碰到了很多char型直接显示出来的,比如\u0000, \u201d, \u201c
首先我想到的是我的数据筛选出现了问题,于是去修改了筛选的部分:
title = title.replaceall("\\u0000","");
title = title.replaceall("\u0000","");
首先是这种,利用string的replace和replaceall方法去过滤,这也是大部分乱码过滤的方法。
在这之后,我使用了直接循环处理char的方法,将string变成char型,然后一个一个判断,虽然比较笨这个方法,但是也算一种吧,谁让我菜呢。
之后我猜可能是编码问题导致了乱码,而现在不情况是只有个别字符串中出现了乱码,大部分还是正确的,所以不存在编码问题。
后来我是在想是不是string转json的时候出现了问题,于是,将spring自带的json换成了阿里的fastjson,解决了部分的乱码问题(\u201d, \u201c),但是\u0000这个东西就是去不掉。
google里有人说string转json最好用list也不是string[]
我的解决
最后,我试着在数据处理完成后再删除\u0000, 结果成功,哎,感觉浪费了好几个小时啊。
补充:java 中各种空(''、\u0000、null)的区别?
在使用下面的sql查询时,发现去不掉空格,而且把limit 去掉以后空格就没有了,琢磨了很久才发现问题的关键所在。
主要是\u0000在作怪!!!
select id,company_name,username,remarks,address from table_alldata where company_name !='' and remarks is null limit 1000;
结果是这样的:
回答:从class字节码的角度来理解吧
1.string s1 = ""的情况,下面是编译后的字节码,可以看到,这种情况s1="aaa"其实没什么区别的,都是从常量池推一个字符串到栈顶,并赋给本地变量。
2.string s2=null的情况,这个时候,并没有在常量池中生成任何的字符串常量,仅仅是将null推送到栈顶赋值给变量。
3.string s3 = "u0000"的情况,会在常量池生成一个表示nul的一个字符串,也就是所谓的control character。
以上为个人经验,希望能给大家一个参考,也希望大家多多支持。如有错误或未考虑完全的地方,望不吝赐教。
上一篇: AI设计一个充满活力渐变的抽象矢量图
推荐阅读
-
Java Http请求传json数据乱码问题的解决
-
用ajax传递json到前台中文出现问号乱码问题的解决办法
-
解决java转义json出现\u0000 等乱码的问题
-
Java Http请求传json数据乱码问题的解决
-
解决php json_encode 出现的中文转码、乱码问题
-
用ajax传递json到前台中文出现问号乱码问题的解决办法
-
ASP.NET中url传递中文的解决方案,传递参数为汉字时出现乱码等问题
-
前端:js转义符的妙用:解决 以0开头的字符串传值 以及 传值过程中会出现乱码的问题
-
解决php json_encode 出现的中文转码、乱码问题
-
解决php json_encode 出现的中文转码、乱码问题_PHP教程