如何判断字符串是不是中文字符串????
rt
char chinese[16];
strcpy( chinese, "中文" );
问题点数:20、回复次数:12Top
1 楼chou16(doudou)回复于 2003-12-01 17:04:35 得分 0
3xTop
2 楼oknight(oknight)回复于 2003-12-01 17:05:57 得分 1
中文字符占2个字节,且其值大于0x8000。
Top
3 楼u2m(醉到天亮说晚安(poople.blogcn.com) )回复于 2003-12-01 17:06:39 得分 0
可以判断Ascii值Top
4 楼chou16(doudou)回复于 2003-12-01 17:08:11 得分 0
if( chinese[0]>0x8000 )????Top
5 楼oknight(oknight)回复于 2003-12-01 17:12:15 得分 1
if( chinese[0]>0x7f )Top
6 楼bluebohe(薄荷)回复于 2003-12-01 17:14:55 得分 10
遍历字符串,if( chinese[0]<0 )如果小于零,则和下一个字符组成一个汉字
一般没问题
Top
7 楼chou16(doudou)回复于 2003-12-01 17:25:04 得分 0
好像是chinese[0]<0,, 而不是 >0x7f ,但为什么呢?
从内存中看到的的确是大于7f的数呀???Top
8 楼fuxf(布衣)回复于 2003-12-01 17:25:27 得分 1
判断字符串含中文字符串吧!!!!
根据ASCII
可以用位操作!
Top
9 楼everandforever(Forever)回复于 2003-12-01 17:38:28 得分 1
GBK范围:
1st byte 2nd byte
0x81~0xfe 0x40~0x7e and 0x80~0xfe
Top
10 楼_xiao(小小)回复于 2003-12-01 17:44:43 得分 5
之所以是chinese[0]<0 而不是 chinese[0]>0x7f 是因为char类型能表示的整数范围是-128到127,也就是说大于0x7f的数读出来就是负数了,如char类型存放0xff时就表示-1这个数,存放0x80则表示-128,看完补码的概念你就明白了。
如果定义unsigned char chinese[0],就应该用chinese[0]>0x7f而不是chinese[0]<0,因为unsigned char类型表示的整数范围是0到255。
Top
11 楼solarsoft(黑鹰)回复于 2003-12-01 17:54:40 得分 1
中文字符占2个字节,且其值大于0x8000。
与ascii值去判断Top
12 楼chou16(doudou)回复于 2003-12-01 17:57:33 得分 0
多谢各位!!!!Top




