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

gggjjj 2006-11-01 08:42:17
一个中文汉字在C中占两个字节,一个西文字符占一个字节,那么怎么识别16位的一个串是代表一个中文字符呢还是两个西文字符呢?
...全文
236 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 );
}
内容概要:本文围绕沼气生产设施中的流体输送系统展开优化设计研究,重点针对沼气厂管道系统的流体动力学特性进行建模与仿真,并以最小化总年化成本(TAC)为目标,结合Matlab代码实现系统的设计与经济性分析。研究整合了流体力学原理与工程经济性评估方法,通过数值模拟优化管道布局、管径选择及泵送能耗等关键参数,从而提升系统运行效率并降低长期运营成本。该资源不仅涵盖理论建模过程,还提供了完整的Matlab代码实现路径,适用于能源系统优化的实际工程与科研场景。; 适合人群:具备一定流体力学、传热传质及工程经济学基础,从事新能源、环境工程、生物质能源系统设计或相关领域研究的研究生、科研人员及工程技术开发者。; 使用场景及目标:①应用于沼气工程中流体管网系统的优化设计与能效提升;②作为高校或科研机构开展Matlab编程与能源系统经济性分析相结合的教学案例;③为生物质能项目的工程实践提供技术支持与决策依据,推动绿色能源系统的可持续发展。; 阅读建议:建议读者结合Matlab代码与流体力学基本理论同步学习,重点关注目标函数构建、约束条件设定及优化算法的实现流程,宜通过调整系统参数进行多情景仿真试验,深入理解各变量对总年化成本的影响机制,进而掌握系统级优化的设计思路与方法论。

111,131

社区成员

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

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

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