在一段文本怎么分开中文和英文字符!

Midi 2000-06-17 08:01:00
汉字是以两个字节表示的,而英文是以一个字符表示的
在文本中怎么怎样区分!请给程序片断!
...全文
142 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
Midi 2000-06-18
  • 打赏
  • 举报
回复
Thank you !
  • 打赏
  • 举报
回复
for(i=0; str[i]; i++)
{
if((str[i]<0)&&(str[i+1]))
Write_Chinese_Character(str+i++); //两个字节的汉字
else
Write_English_Letter(str[i]); //一个字节的英文字母
}

因为C的字符是有符号的,所有汉字的第一个字节都是负数,
如果根据具体编码具体区分只要在if()语句加以判断即可。

汉字国标码 GB2312 的编码范围 ----
第一个字节 0xa1-0xf7
第二个字节 0xa1-0xfe
早期的汉字都是GB2312编码,只含有常用的简体汉字,比如 UCDOS,
中文版 Windows 3.2 等

扩充的国标码 GBK 的编码范围 ----
第一个字节 0x81-0xfe
第二个字节分两段 0x40-0x7e, 0x80-0xfe
现在 Win9x 和 WinNT, Win2k 都是 GBK 码,如果还按照 GB2312
就有一大部分汉字无法显示,GBK 码包含繁体字、简化字和一些
不太常用的汉字和特殊符号比如“囍”“卐”“碁”等

大五码 BIG5 的编码范围 ----
第一个字节 0xa1-0xf9
第二个字节分两段 0x40-0x7e, 0xa1-0xfe
纯繁体的汉字系统比较常见的是 BIG5 码,台湾的汉字系统和台湾版Windows等
feeing 2000-06-17
  • 打赏
  • 举报
回复
中文是双字节的,第一个字节在 0XA0---0XFE之间.

69,369

社区成员

发帖
与我相关
我的任务
社区描述
C语言相关问题讨论
社区管理员
  • C语言
  • 花神庙码农
  • 架构师李肯
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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