当前位置:  开发笔记 > 编程语言 > 正文

如何识别UTF-8编码的字符串

如何解决《如何识别UTF-8编码的字符串》经验,为你挑选了3个好方法。

识别字符串(是或)是否可能是UTF-8编码的最佳方法是什么?Win32 API IsTextUnicode在这里没有多大帮助.此外,该字符串将不具有UTF-8 BOM,因此无法检查.并且,是的,我知道只有ASCII范围以上的字符才会被编码超过1个字节.



1> Edward Wilde..:

由FireFox中使用的Mozilla开发的chardet字符集检测.源代码

jchardet是来自mozilla自动字符集检测算法的源码的java端口.

NCharDet是Mozilla和FireFox浏览器中使用的C++ Java端口的.Net(C#)端口.

代码项目C#示例,它使用Microsoft的MLang进行字符编码检测.

UTRAC是一个用c ++编写的命令行工具和库,用于检测字符串编码

cpdetector是一个用于编码检测的java项目

chsdet是一个delphi项目,是一个独立的可执行模块,用于检测给定文本或文件的自动字符集/编码.

另一个有用的帖子指向很多库来帮助你确定字符编码http://fredeaker.blogspot.com/2007/01/character-encoding-detection.html

您还可以查看相关问题当BOM(字节顺序标记)丢失时,如何最好地猜测编码?,它有一些有用的内容.



2> Laurent..:

没有真正可靠的方法,但基本上,随机字节序列(例如标准8位编码中的字符串)不太可能是有效的UTF-8字符串(如果设置了字节的最高位,关于在UTF-8中可以遵循什么类型的字节,有非常具体的规则,您可以尝试将字符串解码为UTF-8,并且如果没有解码错误则认为它是UTF-8.

确定是否存在解码错误是另一个问题,许多Unicode库只是用问号替换无效字符而不指示是否发生错误.因此,您需要一种明确的方法来确定解码时是否发生错误.



3> hamishmcn..:

此W3C页面具有用于验证UTF-8的perl正则表达式

推荐阅读
k78283381
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有