- 主题:怎么判断下在这种为乱码?
别人传的 utf8,你使用 gbk 去解...
原先 utf8 是: 系统错误调用接口失败 调用超时
http://www.mytju.com/classcode/tools/messyCodeRecover.asp
这个网页,可以看下..就是把各种编码可能性全部处理一遍。
另外,你原先的这个乱码,应该还有个不可见字符...
【 在 t430 (T430) 的大作中提到: 】
: 绯荤粺閿欒璋冪敤鎺ュ彛澶辫触 璋冪敤瓒呮椂
: 应该是正经的中文, 但其实是客户那边返回来的数据,应该是乱码
: 如何判断呢?
: ...................
--
FROM 58.240.26.*
就中文而言,一般建议是先按 一个 解码,如果解不出来,再按 另外一个...
// 项目代码检测顺序:ascii, utf8, gbk, gb18030,然后强制要求 java 代码
但是吧,对于 Java 这个解不出来...
比如 python 或者 iconv 直接提示解不出来
java 默认策略是替换成 \ufffd ...
如果遇到 锟斤拷 就没办法啦
锟斤拷 = \ufffd\ufffd -> GBK
【 在 guestking (无) 的大作中提到: 】
: 有办法吗
: 只能靠猜吧
--
修改:thom FROM 58.240.26.*
FROM 58.240.26.*
java 默认策略是换成 \ufffd,需要特殊处理下,会有异常。
Charset.forName(xxx).newDecoder()
.onMalformedInput(CodingErrorAction.REPORT)
.onUnmappableCharacter(CodingErrorAction.REPORT)
.decode(ByteBuffer.wrap(xxx));
这样应该会异常~默认 new String 是使用 replacement
mozilla 有 chardet 项目,但是吧,对于自研项目,应该主要就是 gbk 与 utf8 了吧
【 在 guestking (无) 的大作中提到: 】
: 解不出来的意思,是指二进制数据超过了某个编码的上下限?
--
FROM 114.222.153.*