社区
C#
帖子详情
怎么识别是一中文汉字还是两个字符呢?
gggjjj
2006-11-01 08:42:17
一个中文汉字在C中占两个字节,一个西文字符占一个字节,那么怎么识别16位的一个串是代表一个中文字符呢还是两个西文字符呢?
...全文
250
5
打赏
收藏
怎么识别是一中文汉字还是两个字符呢?
一个中文汉字在C中占两个字节,一个西文字符占一个字节,那么怎么识别16位的一个串是代表一个中文字符呢还是两个西文字符呢?
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用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 );
}
顶刊复现配电网两阶段鲁棒故障恢复研究(Matlab代码实现)
【顶刊复现】配电网两阶段鲁棒故障恢复研究(Matlab代码实现)
GBT3098.5-2025 紧固件机械性能 自攻螺钉-可搜索
GBT3098.5-2025 紧固件机械性能 自攻螺钉_可搜索.pdf
基于segmentation_models_pytorch开源模型库与自定义模型支持的大尺寸遥感影像语义分割与地物分类项目_使用GDAL进行栅格与矢量数据处理_通过yml配置文件.zip
基于segmentation_models_pytorch开源模型库与自定义模型支持的大尺寸遥感影像语义分割与地物分类项目_使用GDAL进行栅格与矢量数据处理_通过yml配置文件.zip
TypeScript类型系统与全栈项目
ts-type-challenges(TS 类型体操标杆,条件 + 映射 + infer 全覆盖),包含 100 + 实战题:内置工具类型实现、分布式条件、自定义 DeepReadonly/DeepPartial、模板字面量类型,配套练习答案,VIP 级类型编程素材。
考虑不确定性的含集群电动汽车并网型微电网随机优化调度研究(Matlab代码实现)
考虑不确定性的含集群电动汽车并网型微电网随机优化调度研究(Matlab代码实现)
C#
111,131
社区成员
642,542
社区内容
发帖
与我相关
我的任务
C#
.NET技术 C#
复制链接
扫一扫
分享
社区描述
.NET技术 C#
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
让您成为最强悍的C#开发者
试试用AI创作助手写篇文章吧
+ 用AI写文章