Have fun with google: detect encoding of a meaningful string
Mozilla有一套概率机制保证编码检测的准确,尤其是中日韩这样的大字符集. 其原理无非就是利用各个字符集的文字统计上出现频率的倒排表,比对目标文本中的频率,从而猜测文本的编码归属.
而google拥有全世界最大的可公开访问的网页数据库,从而形成了最为专业的文本检索排序的系统.如果利用google,检索某一个短字符串(比如由于各种原因常常混淆的中日韩MP3 id3标签),则有可能根据匹配的记录数推断文本到底属于哪个字符集.
由于id3字符串通常较短, 如果出现大量生僻字,则可能给单独依靠个别文字的识别带来麻烦.而依靠文字组合的概率模型,在本地实现较复杂,需要更大的存储空间,且不能跟踪时代潮流,造成升级的困扰,而google的数据库实时更新,且结果具有实际意义.综上,这些因素给利用google检索条目总数的判别方法留出空间.
实现:
而google拥有全世界最大的可公开访问的网页数据库,从而形成了最为专业的文本检索排序的系统.如果利用google,检索某一个短字符串(比如由于各种原因常常混淆的中日韩MP3 id3标签),则有可能根据匹配的记录数推断文本到底属于哪个字符集.
由于id3字符串通常较短, 如果出现大量生僻字,则可能给单独依靠个别文字的识别带来麻烦.而依靠文字组合的概率模型,在本地实现较复杂,需要更大的存储空间,且不能跟踪时代潮流,造成升级的困扰,而google的数据库实时更新,且结果具有实际意义.综上,这些因素给利用google检索条目总数的判别方法留出空间.
实现:
- 得到MP3 id3tag字符串
- 将字符串分别按utf8, cp936, big5, euc-jp, euc-kr解码(得到utf8的测试编码)
- 分别将不同的测试编码提交给google.com,进行搜索
- 得到条目总数,取最多者
- 对得到正确的id3tag( v1/v2)的能力进行测试
- 对正确地生成请求的url的测试
- 对不同编码的判断结果进行大规模验证
0 Comments:
Post a Comment
<< Home