[-26, -120, -111, -33, -110, -62, -98, -28, -67, -96]
其中,-26, -120, -111是我,-28, -67, -96是你。
中间4个字节的内容是乱码,请问如何把中间乱码的内容去掉,将字符串变成“我你”。
5 个解决方案
#1
看UTF-8的编码原理,不太难。
原始码(16进制) UTF-8编码(二进制)
--------------------------------------------
0000 - 007F 0xxxxxxx
0080 - 07FF 110xxxxx 10xxxxxx
0800 - FFFF 1110xxxx 10xxxxxx 10xxxxxx
……
--------------------------------------------
把里面不能构成正常UTF-8的字符丢掉。
原始码(16进制) UTF-8编码(二进制)
--------------------------------------------
0000 - 007F 0xxxxxxx
0080 - 07FF 110xxxxx 10xxxxxx
0800 - FFFF 1110xxxx 10xxxxxx 10xxxxxx
……
--------------------------------------------
把里面不能构成正常UTF-8的字符丢掉。
#2
1110xxxx 10xxxxxx 110xxxxx 10xxxxxx
例如红色部分就应该丢掉
例如红色部分就应该丢掉
#3
第一种方法就是楼上所说的删不符合要求的字节数组
第二种方法就是你可以在编译之后删乱码的内容嘛。。
第二种方法就是你可以在编译之后删乱码的内容嘛。。
#4
有没有现成的api处理乱码字符的。我用CharsetDecoder也无法处理这些非法字符
#5
那个我倒是不知道,只不过大多数的乱码还是能用asicc判断来去掉的
str=str.replaceAll("[^\u0020-\u9FA5]", "");
这个ASICC的范围是可显示的字符到中文最后一个 的范围。
#1
看UTF-8的编码原理,不太难。
原始码(16进制) UTF-8编码(二进制)
--------------------------------------------
0000 - 007F 0xxxxxxx
0080 - 07FF 110xxxxx 10xxxxxx
0800 - FFFF 1110xxxx 10xxxxxx 10xxxxxx
……
--------------------------------------------
把里面不能构成正常UTF-8的字符丢掉。
原始码(16进制) UTF-8编码(二进制)
--------------------------------------------
0000 - 007F 0xxxxxxx
0080 - 07FF 110xxxxx 10xxxxxx
0800 - FFFF 1110xxxx 10xxxxxx 10xxxxxx
……
--------------------------------------------
把里面不能构成正常UTF-8的字符丢掉。
#2
1110xxxx 10xxxxxx 110xxxxx 10xxxxxx
例如红色部分就应该丢掉
例如红色部分就应该丢掉
#3
第一种方法就是楼上所说的删不符合要求的字节数组
第二种方法就是你可以在编译之后删乱码的内容嘛。。
第二种方法就是你可以在编译之后删乱码的内容嘛。。
#4
第一种方法就是楼上所说的删不符合要求的字节数组
第二种方法就是你可以在编译之后删乱码的内容嘛。。
有没有现成的api处理乱码字符的。我用CharsetDecoder也无法处理这些非法字符
#5
第一种方法就是楼上所说的删不符合要求的字节数组
第二种方法就是你可以在编译之后删乱码的内容嘛。。
有没有现成的api处理乱码字符的。我用CharsetDecoder也无法处理这些非法字符
那个我倒是不知道,只不过大多数的乱码还是能用asicc判断来去掉的
str=str.replaceAll("[^\u0020-\u9FA5]", "");
这个ASICC的范围是可显示的字符到中文最后一个 的范围。