我取到一泰语字串,放入WCHAR的字串中,然后我想用WideCharToMultiByte将字串转换成char类型,然后再用MultiByteToWideChar转换到WCHAR类型的的字串中,用richedit显示,却不能正显示了?为什么?用WideCharToMultiByte转换后的字串进行显示和用MultiByteToWideChar再进行转换字串后用rcihedit控件显示却发现是一样的,为什么?

解决方案 »

  1.   

    估计问题是
    把unicode转成char 类型时
    由于ansi中没有对应字符,
    就把unicode的前后分别转了
    所以显示错误,
    再转回时它认为的是char类型转到unicode
    于是在每个unicode类型的高位补0内容根本还是和原来char类型相同不好意思,我没有具体去写一个去看看
    只是我的推测
    你可以跟踪一下变量里的内容看看
    能找到问题
    解决的办法我还不知道:(
      

  2.   

    1.你的平台支持泰语吗?RichEdit Control本身是不可能支持泰语的。
    2.“用WideCharToMultiByte转换后的字串进行显示和用MultiByteToWideChar再进行转换字串后用rcihedit控件显示却发现是一样的”,只是显示一样,我建议你Debug的时候看看Memory部分,就是比较一下转换前后的两块Memory里面的内容是否相同(字符串首地址肯定拿得到的,对吧?),同时,选定一个泰语字符(你知道编码的),看看转换后在Memory中的编码对不对,如果对,那就不是转换的问题,如果不对,就是转换之前就出错了。
      

  3.   

    感谢楼上的各位。
    的我系统已安装了泰语,可以输入和显示泰语,RichEdit Control是可以支持泰语的,我用过的。
    to krqii(蓝岛) 有可能是你说的问题,但怎么解决?
    to AlvaChin(百尺竿头,卧薪尝胆)
    你说我第二个问题我没注意,我要看看。
      

  4.   

    我做了一个屏幕取词,泰语要跟中文、英语一起返回,所以想先全部转成char 然后再转回来。
      

  5.   

    感觉不需要转char吧
    具体的技术细节不清楚
    中间有必须用char的地方?
    应该不会有吧
    nt内核支持unicode
    98倒是支持的差一些
    但是感觉转换没有必要啊
    如果中间有必须用char的地方
    那也可以自己重载一下函数啊
    unicode是UINT类型的嘛,
    希望不要转
    因为亚洲的unicode字符转成char真的不知道会给变成什么样子
      

  6.   

    还有是不是你选定的一种字体不能
    同时支持汉语和泰语?
    不同时支持时好像就有显示错误的问题
    你看一下是不是字体的问题
    windows程序设计里写了一点关于这个的
    字体不支持的不能正确显示
    我估计你遇到的应该是这个问题
    解决办法我还是没有
    你去查一下unicode字体的有关东西