开发环境
名称 | 版本 |
---|---|
操作系统 | Windows 10 X64 |
Visual Studio | 12.0.21005.1 REL |
参考
汉字编码范围
编码 | 说明 |
---|---|
GB2312 | 1981 年 5 月 1 日发布的简体中文汉字编码国家标准。 GB2312 对汉字采用双字节编码,收录 7445 个图形字符,其中包括 6763 个汉字。 |
BIG5 | 中国台湾省繁体中文标准字符集,采用双字节编码,共收录 13053 个中文字,1984 年实施。 |
GBK | 1995 年 12 月发布的汉字编码国家标准,是对 GB2312 编码的扩充,对汉字采用双字节编码。 GBK 字符集共收录 21003 个汉字,包含国家标准 GB13000-1 中的全部中日韩汉字,和 BIG5 编码中的所有汉字。 |
GB18030 | 2000 年 3 月 17 日发布的汉字编码国家标准,是对 GBK 编码的扩充,覆盖中文、日文、朝鲜语和中国少数民族文字,其中收录 27484个汉字。 GB18030 字符集采用单字节、双字节和四字节三种方式对字符编码。兼容 GBK 和 GB2312 字符集。 |
Unicode | 国际标准字符集,它将世界各种语言的每个字符定义一个唯一的编码,以满足跨语言、跨平台的文本信息转换。 |
汉字 unicode 编码表
字符集 | 字数 | Unicode 编码 |
---|---|---|
基本汉字 | 20902 字 | 4E00-9FA5 |
基本汉字补充 | 38 字 | 9FA6-9FCB |
扩展A | 6582 字 | 3400-4DB5 |
扩展B | 42711 字 | 20000-2A6D6 |
扩展C | 4149 字 | 2A700-2B734 |
扩展D | 222 字 | 2B740-2B81D |
康熙部首 | 214 字 | 2F00-2FD5 |
部首扩展 | 115 字 | 2E80-2EF3 |
兼容汉字 | 477 字 | F900-FAD9 |
兼容扩展 | 542 字 | 2F800-2FA1D |
PUA(GBK)部件 | 81 字 | E815-E86F |
部件扩展 | 452 字 | E400-E5E8 |
PUA增补 | 207 字 | E600-E6CF |
汉字笔画 | 36 字 | 31C0-31E3 |
汉字结构 | 12 字 | 2FF0-2FFB |
汉语注音 | 22 字 | 3105-3120 |
注音扩展 | 22 字 | 31A0-31BA |
〇 | 1字 | 3007 |
判断是否存在汉字
/// <summary>
/// 判断是否存在汉字
/// </summary>
/// <param name="value">单个字符</param>
/// <returns>是汉字返回 true</returns>
private static bool IsHasChinese(string value)
{
bool result = false;
//基本汉字 20902字
//https://www.cnblogs.com/straybirds/p/6392306.html
Regex rg = new Regex("^[\u4e00-\u9fa5]$");
for (int i = 0; i < value.Length; i++)
{
result = rg.IsMatch(value[i].ToString());
if (result) return result;
}
return result;
}
测试
static void Main(string[] args)
{
#region 判断是否有中文
//string str = "?";
string str = "中文简体";
if (IsHasChinese(str)) Console.WriteLine("\"{0}\",有中文", str);
else Console.WriteLine("\"{0}\",没有中文",str);
str = "體國";
if (IsHasChinese(str)) Console.WriteLine("\"{0}\",有中文", str);
else Console.WriteLine("\"{0}\",没有中文", str);
str = "english";
if (IsHasChinese(str)) Console.WriteLine("\"{0}\",有中文", str);
else Console.WriteLine("\"{0}\",没有中文", str);
str = " ナな";
if (IsHasChinese(str)) Console.WriteLine("\"{0}\",有中文", str);
else Console.WriteLine("\"{0}\",没有中文", str);
str = "??";
if (IsHasChinese(str)) Console.WriteLine("\"{0}\",有中文", str);
else Console.WriteLine("\"{0}\",没有中文", str);
str = "中文??englissh";
if (IsHasChinese(str)) Console.WriteLine("\"{0}\",有中文", str);
else Console.WriteLine("\"{0}\",没有中文", str);
#endregion
}
运行结果
"中文简体",有中文
"體國",有中文
"english",没有中文
" ナな",没有中文
"??",没有中文
"中文??englissh",有中文