快速判断UTF8字符串中是不是有中文

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了快速判断UTF8字符串中是不是有中文相关的知识,希望对你有一定的参考价值。

参考技术A 咋个要看是哪种编码的字符串。 VC/VS里面,汉字默认都是以GBK编码, 英文字符一个byte,中文字符2个byte。 而std::wstring 是unicode形式,英文和中文都是2二个byte。 而char* 或者 std::string 也能保存中文,如 GBK 或者 utf8编码。

如何判断一个字符串是不是是unicode编码?

不论何种编程语言请写出源代码。谢谢!

只是一个字符串
我没那个本事

如果是一个标准的文本文件 是可以识别的

标准的 Unicode 称为UTF-16(UTF:UCS Transformation Format )。后来为了双字节的Unicode能够在现存的处理单字节的系统上正确传输,出现了UTF-8,使用类似MBCS的方式对Unicode进行编码。(Unicode字符集有多种编码形式)
例如"连通"两个字的Unicode标准编码UTF-16 (big endian)为:DE 8F 1A 90
而其UTF-8编码为:E8 BF 9E E9 80 9A

当一个软件打开一个文本时,它要做的第一件事是决定这个文本究竟是使用哪种字符集的哪种编码保存的。软件一般采用三种方式来决定文本的字符集和编码:
检测文件头标识,提示用户选择,根据一定的规则猜测
最标准的途径是检测文本最开头的几个字节,开头字节 Charset/encoding,如下表:
EF BB BF UTF-8
FE FF UTF-16/UCS-2, little endian
FF FE UTF-16/UCS-2, big endian
FF FE 00 00 UTF-32/UCS-4, little endian.
00 00 FE FF UTF-32/UCS-4, big-endian.

怎么样 相信你是能够实现这个算法的

good luck .
参考技术A Unicode编码标准中的所有字符都是双字节长。
单字节字符集是拉丁字母,重音文字,用ASCII标准定义,用于DOS操作系统。双字节字符集用于东亚和中东语言。Unicode用于COM和Windows NT内部。

单字节字符集,它的数据类型是char。
Unicode字符集用wchar_t数据类型。
Unicode字符串用L前缀起头,如:
wchar_t wch = L'1'; // 2 个字节, 0x0031
wchar_t* wsz = L"Hello"; // 12 个字节, 6 个宽字符

用strlen()函数求字符串的长度(非unicode)

_mbslen ( ) (UNICODE)

求出长度,读出数据内容。

以上是关于快速判断UTF8字符串中是不是有中文的主要内容,如果未能解决你的问题,请参考以下文章

如何判断数据库中存储的是不是乱码

c语言中怎样判断一行中是不是有汉字

判断字符串是否为UTF8编码

PHP判断字符串中是不是包含数组其中的一项

python识别文言文

python 判断一个字符能否用gbk和utf8编码