汉字,字节。快快快!!
如果一行汉字,读入时是从头一个汉字一个汉字的读入的。并且每个汉字分两个字节读入,如何才能在程序里得到汉字。就是怎么对一个汉字分成两个字节读入时,对这两个字节怎么处理才能得到汉字!!!! 问题点数:100、回复次数:13Top
1 楼greatefish(大鱼)回复于 2002-03-30 15:19:25 得分 20
1:不管是GB还是BIG5,它都是用两个字节来保存一个汉字
2:一个汉字的两个字节中,第一个字节的字符>127,第二个
字节就不一定了
3:例如:
char cStr[81]="abc123你好123abc";
for(int i=0;i<strlen(cStr);i+=2)//注意,i+=2
{
if(cStr[i]>127)//第i与i+1这两个字节是一个汉字
{
do something
}
}Top
2 楼aleg(汝)回复于 2002-03-30 16:01:25 得分 0
两个字节怎么样相加才可以得到一个汉字呢???Top
3 楼fiveyes(天才的剽窃如羚羊挂角无迹可寻)回复于 2002-03-30 16:10:47 得分 20
开始->程序->Borland C++Builder5->Help->Visual Component Library Reference->Categorical Routines Listing->Mbcs utilities,其中有你需要的函数,例如,ByteType可返回某一个字节的类型:它是一个单字节字符呢,还是一个多字节字符的第一个字节呢,还是一个多字节字符的第二个字节呢,使用起来很简单的。
这个方法仅能判断该不该把两个字节合成一个双字节字符来处理,却不能知道那个双字节字符是不是汉字,因为还有许多符号也是双字节的,如果你真的需要那样,可能还得在CSDN搜索一番。
我为什么不作出回答?因为我不会。:)Top
4 楼aleg(汝)回复于 2002-03-30 21:10:03 得分 0
也很感谢你了,至少也给我点建议!!
高手们,有没有人可以帮我解决这个问题呀!!!Top
5 楼songhtao(三十年孤独)回复于 2002-03-30 21:37:23 得分 10
AnsiString中有判断双字节的方法。Top
6 楼webtt(tt)回复于 2002-03-30 21:48:08 得分 10
曾经在DOS下做过,汉字库是UCDOS的,那是首先得到汉字的编码,然后从UCDOS提供的汉字库里根据公式计算汉字的位置,然后得到汉字字模,一个点一个点与出来的。那当然实在无中文状态下,在中文winxxx里我想,你只需要挨着输出就行了,我可能还不太明白你的问题。Top
7 楼cdws222(二当家)回复于 2002-03-30 22:19:15 得分 10
汉字的第一个字节的码值小于0(我在DOS下是这么做的)Top
8 楼yaohongwen(摇摇摇摇)回复于 2002-03-31 04:26:54 得分 10
看看汉字编码原理吧Top
9 楼aleg(汝)回复于 2002-03-31 13:58:23 得分 0
可能是小弟表达的不够清楚,而使各位不能完全理解小弟的意思。其实是这样的,就是form上的一个edit上面输入一行汉字,但是对汉字的处理有只能是一个个汉字来,而且每个汉字分两个字节取。小弟想知道的就是如何将这两个字节处理,在程序里就可以得到和外面读入的是一样的汉字。Top
10 楼mikesome()回复于 2002-03-31 14:28:10 得分 10
WideString
看帮助Top
11 楼aleg(汝)回复于 2002-03-31 15:05:11 得分 0
WideString这个是把汉字当一个字节处理的啊,我也知道的。但是根据我现在程序的情况是不能用WideString啊Top
12 楼leonpard(猪哥哥)回复于 2002-03-31 15:36:06 得分 10
AnsiString 有个方法叫IsLeadByte不知道有没有帮助,你
可以查看一下。Top
13 楼aleg(汝)回复于 2002-04-02 09:16:00 得分 0
多谢大家的关照,我已经完成了呢!!!现在就给你们加分。Top




