如何判断字符串是否是乱码?

有数十亿网页的标题,标题其实就是一段字符串,如何判断这一段字符串是否是乱码?即使对编码格式已经做了很多兼容处理,终究会存在零星的落网之鱼;请问如何判断字符串是否是乱码?乱码主要是来源于零星的站点采用了极其非主流的编码格式。

喜欢这个问题 | 分享 | 新建回答

回答

jerkzhang

Dec 29, 2019
0 赞

目前的一种解决思路是通过分词的方式来处理。

举一个例子:“如何判断字符串是否是乱码?
上述这个字符串若作为unicode,则长度为13;
使用jieba分词或者snownlp对这个句子进行分词,分词结果为“如何/判断/字符串/是否/是/乱码/?”
总共分词得到词语的数量为7;

用unicode字符串长度除以分词后得到的词语数量作为判断,上述例子中得到的是13/7=1.857;这个就是属于一个正常的范围;根据经验,正常的句子的这个值会大于1.15,若小于1.15的都可以当做是乱码。1.15只是一个经验之谈,并不是绝对的。

具体的使用场景,还要根据具体的问题来进一步调整;上述的这个算法并不是完美的。上述的这种算法对于异常文本的监测比较有效,但对于作弊网页来说,依然不足,显然太简单了。