请问各位大侠:如何区分一个字符是汉字的前半字符还是后半字符

fyje 2001-08-29 03:27:40
...全文
227 20 打赏 收藏 转发到动态 举报
写回复
用AI写文章
20 条回复
切换为时间正序
请发表友善的回复…
发表回复
keiga 2001-08-31
  • 打赏
  • 举报
回复
to game_boy(gamesboy)
GBK 呢??????
psy 2001-08-31
  • 打赏
  • 举报
回复
GB码的编码范围是首字节A1-F7,尾字节A1-FE,而且首字节A1-A9是符号区,AA-AF这
一段没有定义。BIG5码的编码范围是首字节A1-F9,尾字节分两段,分别是40-7E及
A1-FE,首字节A1-A3是符号区,A4-C5是常用汉字区。

http://www.csdn.net/develop/library/vc/Tips/1838.shtm
game_boy 2001-08-31
  • 打赏
  • 举报
回复
to psy:0xe6 > 0x80,有錯麼?? 後半部分當然不一定了,要不哪裡還有這個問題阿
to keiga:我去年進公司做第一個軟件項目的時候就碰到這類問題,自己解決的,你可以把這段程序寫出來看看,沒有問題的,這樣的問題跟本不需要權威來證明它
keiga 2001-08-31
  • 打赏
  • 举报
回复
to game_boy(gamesboy)
你的理论是谁教的???????
psy 2001-08-31
  • 打赏
  • 举报
回复
错了
"鎔"字是
0xe6,0x67
要注意!!
game_boy 2001-08-31
  • 打赏
  • 举报
回复
沒有問題,因為0x80以下就是單個字符,gbk總是大於0x80的
jimgreen 2001-08-30
  • 打赏
  • 举报
回复
ai
xmxmlt 2001-08-30
  • 打赏
  • 举报
回复
唉,怎么搞的,在GB中,单字节字符的ASCII值<160,而汉字的值>=160
game_boy 2001-08-30
  • 打赏
  • 举报
回复
完全沒有問題,從要判斷的字符往前(或往後)數,並判斷,直至連續兩個字節都小於0x80則可以確定後一個必然是單個的字符,根據記數的奇偶就可以確定當前字節是否漢字的後半部分.
不論是甚麼字庫,gb,big5等等,均好使.
SCUM 2001-08-30
  • 打赏
  • 举报
回复

GB2312 没有办法 只能从头数了
keiga 2001-08-30
  • 打赏
  • 举报
回复
对了,在程序中规定所有字符都占两字节,比如:A为0x0040L,半角字符高位用0补齐,不就解决了吗
keiga 2001-08-30
  • 打赏
  • 举报
回复
kao 人家又没说在GB中,这个问题不用讨论啦,除非系统中每个字符规定占两个字节(包括半角字符),否则混合起来,根本分不出来。
NowCan 2001-08-29
  • 打赏
  • 举报
回复
无法区分,没见很多老软件由于半个汉字问题导致乱码?
cgaga 2001-08-29
  • 打赏
  • 举报
回复
单个字节不可区分

如果是在字符串中分两种情况
如果是宽字节字符集的字符串(unicode字符集,BSTR或LPOLECHAR中),可用奇偶法
如果是多字节字符集的字符串中(普通字符串),只能扫描整个字符串

MountLion 2001-08-29
  • 打赏
  • 举报
回复
数数的方法不行,因为可能包含单字节字符。
MountLion 2001-08-29
  • 打赏
  • 举报
回复
BCB/Delphi: bool AnsiString::IsLeadByte(int index)
fsb_12345 2001-08-29
  • 打赏
  • 举报
回复
gz
fyje 2001-08-29
  • 打赏
  • 举报
回复
我用的也是这个办法,唉,感觉有点笨
psy 2001-08-29
  • 打赏
  • 举报
回复
我用过记数然后判断奇偶的方法
xmxmlt 2001-08-29
  • 打赏
  • 举报
回复
数一下半个字符是奇还是偶
, NO 是 0 , BOOL 本身就是个 char 。 4、IBOutlet、IBAction是啥玩意,总能看到。 这两个东西其实在语法中没有太大的作用。如果你希望在Interface Builder中能看 ,NO是0,BOOL本身就是个char。 4、IBOutlet、IBAction是啥玩意,总能看到。 这两个东西其实在语法中没有太大的作用。如果你希望在Interface Builder中能看到这个控件对象,那么在定义的时候面加上IBOutlet,在IB里就能看到这个对象的outlet,如果你希望在Interface Builder里控制某个对象执行某些动作,就在方法面加上(IBAction)。 而这两个东西实际上和void是一样的。 5、nil。 Objective-C里的NULL(空)就这么写,表示空指针。 6、为什么是@”字符串”而不是”字符串” 面加上@符号,编译器在编译的时候会在程序中给你留出位置,这样才能保证这个字符串不会丢失。反正记住,如果你要想把某些字符串写死在程序里,就要用@”字符串”,如果忘了用@,程序应该会出错。 superzhou大侠指正: 6、为什么是@”字符串”而不是”字符串” ”字符串”是C的字符串,@”"是把C的字符串转成NSString的一个简写. 在需要NSString的地方才需要这个转化,例如NSLog里面. 在需要C string的地方,还是用”字符串”的. 另外,@”"这个转换是不支持中文的.例如NSLog(@”字符串”); 是一定输出不了中文的. 四、Objective-C 2.0 Objective-C 2.0是Leopard新增加的一门语言,其实和原来的Objective-C是一样的。主要是增加了属性。详细的内容这里不写了,可以参阅Allen Dang的这篇文章,写的很明白。 http://blog.codingmylife.com/?p=81 五、总结 现在来总结一下怎么看Objective-C的代码和怎么开始学Objective-C吧。 1、记住Objective-C就是C,不是火星语,这个很关键。 2、记住你自己看不懂不表示脑子迟钝,大部分人第一次看Objective-C的代码可能比你还要迟钝。 3、把CocoaChina.com加入收藏夹,看不明白代码就来再看一遍这篇开宗明义的好文。 4、文档很关键,当你看不懂某些东西说的是什么的时候,先查Cocoachina,再看英文文档里面的API说明,尤其这个类是以NS开头的时候。再不行就去google搜,直接把你要查的方法贴进google,通常能找到不少人也在问同样的问题,自然也有热心人活雷锋帮助回答。 5、可以看hello world例子,但是不能总看,看多了真的会晕。另外,千万要放弃苹果官方的Currency Converter货币转换的例子,那个例子是毒药,刚学的时候越看越蒙。 6、学习一门语言最好的方法是先用,和学外语一样,当你会说的时候自然会读。给自己设立一个简单的目标,比如做一个简单的程序,然后一点点解决问题。这样学习起来比只看例子快得多。

69,371

社区成员

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

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