怎么识别是一中文汉字还是两个字符呢?

gggjjj 2006-11-01 08:42:17
一个中文汉字在C中占两个字节,一个西文字符占一个字节,那么怎么识别16位的一个串是代表一个中文字符呢还是两个西文字符呢?
...全文
217 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
sanniko 2006-11-01
  • 打赏
  • 举报
回复
[DllImport("kernel32")]
private static extern int lstrlenA(string lpString);
zzPandazz 2006-11-01
  • 打赏
  • 举报
回复
现在英文也是两个了
jxhwei 2006-11-01
  • 打赏
  • 举报
回复
Unicode的特点是:
不管哪一国的字符码均以两个Byte表示,例如"A"在Unicode则是16进制41和00的组合,即4100,高位41(转换为Ascii码即是65=A)

如果用的是Ascii码,自然不存在这个问题,如果是Unicode码,那么,如果后2位是00的,就是英文字符
gggjjj 2006-11-01
  • 打赏
  • 举报
回复
最后一句有些看不懂啊。
Knight94 2006-11-01
  • 打赏
  • 举报
回复
通过Encoding来判断,例如:
private int GetChsCharLength( string strValue )
{
if( strValue == null || strValue == "" ) return 0;

Encoding encGB = Encoding.GetEncoding( "gb2312" );
Encoding encUnicode = Encoding.Unicode;

return strValue.Length - ( encUnicode.GetByteCount( strValue ) - encGB.GetByteCount( strValue ) );
}

private int GetAniCharLength( string strValue )
{
if( strValue == null || strValue == "" ) return 0;

Encoding encGB = Encoding.GetEncoding( "gb2312" );
Encoding encUnicode = Encoding.Unicode;

return encUnicode.GetByteCount( strValue ) - encGB.GetByteCount( strValue );
}
内容概要:《确定性算力网络白皮书》系统阐述了算力网络的发展背景、核心概念、关键技术突破及典型应用场景。文章指出,随着5G/6G、工业互联网、人工智能等新兴技术的发展,传统云网融合已难以满足高可靠、低时延、高安全的业务需求,亟需构建以算为中心、网为根基的确定性算力网络。该网络通过统一标识、统一调度、多云融合、算网一体等技术,实现异构算力资源的高效整合与协同调度,并依托SRv6、TSN、DetNet、CQF、DIP、CSQF等确定性网络技术,保障端到端的确定性服务质量。白皮书首次提出“确定性算力”概念,构建“1+3+3+3”模式,推动算力基础设施向低成本、高性能、高安全方向演进。; 适合人群:从事通信网络、云计算、边缘计算、工业互联网、人工智能等相关领域的研究人员、技术人员、企业决策者及政策制定者。; 使用场景及目标:①为工业互联网提供低时延、高可靠的控制网络支撑;②支持科研领域大规模高性能计算与数据处理;③赋能人工智能大模型训练与跨区域算力调度;④保障能源物联网中能碳数据的实时采集与交易;⑤提升车联网中自动驾驶的响应速度与安全性; 阅读建议:建议结合国家“东数西算”战略背景,重点关注算力度量、算力调度、SRv6标识、确定性网络等核心技术章节,并参考典型行业案例进行系统性研读,以深入理解算力网络的架构设计与产业价值。

111,130

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Creator Browser
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧