Chinaunix

标题: 在unix下,用c语言怎么区分一个字符是半角字符还是全角字符 [打印本页]

作者: lzg7911    时间: 2004-08-26 15:19
标题: 在unix下,用c语言怎么区分一个字符是半角字符还是全角字符
在unix下,用c语言怎么区分一个字符是半角字符还是全角字符
作者: xeroo    时间: 2004-08-26 15:21
标题: 在unix下,用c语言怎么区分一个字符是半角字符还是全角字符
ASCII编码的话 全角半角只要判断是一个字节还是两个字节就可以了
UNICODE的话 判断高字节是否为0
作者: lzg7911    时间: 2004-08-26 15:27
标题: 在unix下,用c语言怎么区分一个字符是半角字符还是全角字符
请问用哪个函数取得字节数呢?
作者: lzg7911    时间: 2004-08-27 10:48
标题: 在unix下,用c语言怎么区分一个字符是半角字符还是全角字符
自己顶一下,有急用,请指教
作者: CNL    时间: 2004-08-29 18:08
标题: 在unix下,用c语言怎么区分一个字符是半角字符还是全角字符
判断字符是否>;160不就行了
unsigned char a;
if (a>;160) { // 汉字
....
作者: lzg7911    时间: 2004-08-29 18:48
标题: 在unix下,用c语言怎么区分一个字符是半角字符还是全角字符
是从文件中读入的,一个字符变量是一个字节,一个全角是2个字节。这个怎么处理?只能判断高位的吗?
作者: FH    时间: 2004-08-29 22:56
标题: 在unix下,用c语言怎么区分一个字符是半角字符还是全角字符
原帖由 "CNL" 发表:
判断字符是否>;160不就行了
unsigned char a;
if (a>;160) { // 汉字
....

不能用160,要用128,或者0x80。
严格的判定方法很罗嗦,一般简单的办法是判断全角字符的首字节,当然这种方法不够严格。
作者: lomio    时间: 2004-08-30 04:41
标题: 在unix下,用c语言怎么区分一个字符是半角字符还是全角字符
原帖由 "FH" 发表:

不能用160,要用128,或者0x80。
严格的判定方法很罗嗦,一般简单的办法是判断全角字符的首字节,当然这种方法不够严格。


如果要判定的是繁体字呢?或者要判定这个名字是否为英文字母a-z或A-Z而不包含特殊字符呢?
作者: henngy    时间: 2004-08-30 09:09
标题: 在unix下,用c语言怎么区分一个字符是半角字符还是全角字符
要判断的话还是先把它们都当成双子节(汉字)转换,然后判断高位是不是0x00,如果是的话说明是半角(数字,字母,,,,)如果不是0x00那就是全角(汉字一类)
作者: FH    时间: 2004-08-30 09:27
标题: 在unix下,用c语言怎么区分一个字符是半角字符还是全角字符
原帖由 "lomio" 发表:


如果要判定的是繁体字呢?或者要判定这个名字是否为英文字母a-z或A-Z而不包含特殊字符呢?

繁体字、韩文、日文都可以这样判断。
判断a-z可以用isalpha、islower、isupper等
作者: lomio    时间: 2004-08-30 13:06
标题: 在unix下,用c语言怎么区分一个字符是半角字符还是全角字符
原帖由 "FH" 发表:

繁体字、韩文、日文都可以这样判断。
判断a-z可以用isalpha、islower、isupper等


判断繁体字、韩文、日文应该从多少开始呢?没有弄过这个东东。
isalpha、islower、isupper已经试过了,谢谢。

判断字符c是否为字母或数字还可以用isalnum,真舒服。
作者: FH    时间: 2004-08-30 13:53
标题: 在unix下,用c语言怎么区分一个字符是半角字符还是全角字符
依系统、编码不同而不同,但0x80是涵盖了东亚各种多字节文字的。




欢迎光临 Chinaunix (http://bbs.chinaunix.net/) Powered by Discuz! X3.2