- 主题:怎么判断下在这种为乱码?
就中文而言,一般建议是先按 一个 解码,如果解不出来,再按 另外一个...
// 项目代码检测顺序:ascii, utf8, gbk, gb18030,然后强制要求 java 代码
但是吧,对于 Java 这个解不出来...
比如 python 或者 iconv 直接提示解不出来
java 默认策略是替换成 \ufffd ...
如果遇到 锟斤拷 就没办法啦
锟斤拷 = \ufffd\ufffd -> GBK
【 在 guestking (无) 的大作中提到: 】
: 有办法吗
: 只能靠猜吧
--
修改:thom FROM 58.240.26.*
FROM 58.240.26.*
解不出来的意思,是指二进制数据超过了某个编码的上下限?
【 在 thom (Keep It Simple, Stupid.) 的大作中提到: 】
: 就中文而言,一般建议是先按 一个 解码,如果解不出来,再按 另外一个...
: // 项目代码检测顺序:ascii, utf8, gbk, gb18030,然后强制要求 java 代码
: 但是吧,对于 Java 这个解不出来...
: ...................
--
FROM 180.167.95.*
解不出来如何判断?肉眼看下结果吗?
【 在 thom (Keep It Simple, Stupid.) 的大作中提到: 】
: 就中文而言,一般建议是先按 一个 解码,如果解不出来,再按 另外一个...
: // 项目代码检测顺序:ascii, utf8, gbk, gb18030,然后强制要求 java 代码
: 但是吧,对于 Java 这个解不出来...
: ...................
--
FROM 114.247.175.*
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.*
你这个才是核心问题,实际上编码A按B乱解完全符合B编码范围的也很常见,一个思路是检查是不是符合文法统计,不过短数据确实不好办。
【 在 eventvwr 的大作中提到: 】
:
: 解不出来如何判断?肉眼看下结果吗?
: 【 在 thom (Keep It Simple, Stupid.) 的大作中提到: 】
: : 就中文而言,一般建议是先按 一个 解码,如果解不出来,再按 另外一个...
: : // 项目代码检测顺序:ascii, utf8, gbk, gb18030,然后强制要求 java 代码
#发自zSMTH@钛星
--
FROM 222.129.50.*