如何区分是汉字还是字母(1个字节和2个字节)?

hare 2000-04-11 09:54:00
因为我要将中文分成两部分打印,在取汉字和特殊符号会有时出现乱码(可能是因为汉字为两个字节而我取了前面一个字节,所以出现乱码,请问如何区分是汉字(2个字节)和
字母和数字(1个字节)?
...全文
507 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
neil 2000-04-14
  • 打赏
  • 举报
回复
给你代码,你按需修改一下就可以了
*---------判断字符串中是否含有高位字符含有汉字
*--入口:字符串
*--返回:.t. 为有汉字字符 .f. 为无汉字符
func SearchCH
para wk_str
noNull=alltrim(wk_str)
returnthis=.f.
for i=1 to len(noNull)
if asc(substr(noNull,i,1))<122
returnthis=.f.
else
returnthis=.t.
exit
endif
endfor
return returnthis
hare 2000-04-12
  • 打赏
  • 举报
回复
在FORPRO25/DOS中ASC()只认一个字节呀,汉字不能识别的,

我现在急死了呀,帮帮我吧!

008 2000-04-11
  • 打赏
  • 举报
回复
同意!
telan 2000-04-11
  • 打赏
  • 举报
回复
用用:
BOOL IsDBCSLeadByte(
BYTE TestChar // character to test
);

BOOL IsDBCSLeadByteEx(
UINT CodePage, // identifier of code page
BYTE TestChar // character to test
);
Un1 2000-04-11
  • 打赏
  • 举报
回复
ASC码不行吗?所有ASC码不在0-255之间的暂且认为不是英文字
hare 2000-04-11
  • 打赏
  • 举报
回复
各位太虾,我用的是FOXPRO25/DOS呀,在帮我想想吧!
x86 2000-04-11
  • 打赏
  • 举报
回复
一般来讲,汉字的两个字节都大于0xa0,你可以做如下判断:
如果一个字节大于0xa0,而其前后都小于0xa0,则此字节不属于汉字

34,590

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server相关内容讨论专区
社区管理员
  • 基础类社区
  • 二月十六
  • 卖水果的net
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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