我现在有一个char的字符串"/*????êy?Y*/abcd"(就是这个乱码串)
我现在把其放入CRichEditCtrl中,我调用richeditctrl的setsel函数来选中注释后的字符.
首先,我把该字符串读入到一个char数组中,相当于
char * c = "/*????êy?Y*/abcd"
我通过for循环判断出最后一个"/"的位置是12。
故我调用setsel(13,15);
但是程序执行后,选中的是bdc,而不是我所希望的abc。经过调试,发现字符"ê"在用char来处理的时候,是两个字节。
但是在CRichEditCtrl的SetSel又只把它当作一个字节(感觉是这样,也不知道对不对)。请问,我应该怎样解决这个问题。
1、我的目的是得到abc。2、在调用setsel的时候,可以设置所需要的字符集,本问题与此有关吗?3、字符"ê"的编码是A8 BA(或者是BA A8),请问以A8开始的字符是什么字符?解决后另开贴给分。

解决方案 »

  1.   

    真的给500分?哇,不管我对不对,一定要给点我哦!!!判断第个字符,当它的值大于128时就是一个汉字字符,汉字字符的话,不管它显示占
    一个字符还是两个字符宽度,都是两个字节,比如音标就是这种情况。我这样讲你应该知道该怎么办了吧,判断当前汉字是不是在音标区内(即显示点一个字符,
    但实际占两个字符的那些汉字内),如果是的话,就减一。OK了吧!!http://www.dpspace.com
    哎,再有50分我就可以升五角啦!同志们加油啊!!
      

  2.   

    CRichEditCtrl的SetSel在选择时能够判断汉字,比如“你好吗?”如果是SetSel(2,3)选中的将是“吗?”,但是如果将该字符串到char *中,使用strlen得到的结果是7。汉字存储时占用两个字节。(不过在最新的.NetFrameWork中所有的char 都是占用两个字节,就不会出现这样的问题).如果使用CString类的对象来判断汉字字符串就不会出现问题,它能认识。具体内部是怎样判断,是因为汉字的两个字节的每个字节的第一个位都是0还是1我也既不清楚了。