none
请问多字节的程序能正常显示当前系统文字之外的其他文字吗? RRS feed

  • 问题

  • 已经维护了几年一个程序,程序最开始提供的时候是使用多字节字符集。最近客户要求程序要能够在英文Windows下正常显示阿拉伯文和波斯文,

    首先,我知道Unicode程序可以轻松做到这一点,不过如果要把这个程序完全改成Unicode兼容,需要修改几千行代码,所花时间很长,

    而且有某些第三方的库,还有可能无法完全转到Unicode。因为客户要求的是界面上能够显示阿拉伯文和波斯文

    (这两种语言的文件是单独提供的txt档案,txt档是Unicode编码,程序读取文件并显示到界面上),我觉得可以

    1.读取Unicode字符

    2.使用WideCharToMultiByte函数来把读取到的Unicode字符转化为ASCII编码(使用对应的Codepage)

    3.显示到界面上

    但是测试在第二步的时候转换出来的字符仍然是乱码,显示到界面上之后还是乱码

    我想问问在一个多字节程序里面到底能不能做到用ASCII编码来显示Unicode字符?


    2014年6月23日 9:20

答案

  • 说一个看起来没直接关系的问题,我认为系统的Codepage就像一本字典,某个字符要怎么显示就要来查这个字典,那么某个字符(举例它的值是0123),在英语代码页和阿拉伯文代码页里面查出来的内容就是不一样的,所以系统的活动代码页是英语的话,对于多字节程序是没法正常显示阿拉伯文的;至于Unicode编码,它就是一本更大的字典,所有的字符都被包含在里面所有的字符的值都有唯一对应的内容,所以不需要切换,就可以显示多种语言。这是我的理解,如果有不对的地方请指教。


    2014年6月23日 9:26
  • 你好,

    我个人觉得你的理解是没有问题的,针对你现在的问题,我还是觉得改为Unicode是一劳永逸的事情。


    We are trying to better understand customer views on social support experience, so your participation in this interview project would be greatly appreciated if you have time. Thanks for helping make community forums a great place.
    Click HERE to participate the survey.

    2014年6月24日 9:22

全部回复

  • 说一个看起来没直接关系的问题,我认为系统的Codepage就像一本字典,某个字符要怎么显示就要来查这个字典,那么某个字符(举例它的值是0123),在英语代码页和阿拉伯文代码页里面查出来的内容就是不一样的,所以系统的活动代码页是英语的话,对于多字节程序是没法正常显示阿拉伯文的;至于Unicode编码,它就是一本更大的字典,所有的字符都被包含在里面所有的字符的值都有唯一对应的内容,所以不需要切换,就可以显示多种语言。这是我的理解,如果有不对的地方请指教。


    2014年6月23日 9:26
  • 你好,

    我个人觉得你的理解是没有问题的,针对你现在的问题,我还是觉得改为Unicode是一劳永逸的事情。


    We are trying to better understand customer views on social support experience, so your participation in this interview project would be greatly appreciated if you have time. Thanks for helping make community forums a great place.
    Click HERE to participate the survey.

    2014年6月24日 9:22
  • 你好,

    我个人觉得你的理解是没有问题的,针对你现在的问题,我还是觉得改为Unicode是一劳永逸的事情。


    We are trying to better understand customer views on social support experience, so your participation in this interview project would be greatly appreciated if you have time. Thanks for helping make community forums a great place.
    Click HERE to participate the survey.

    是的,虽然感觉上时间会很长,不过做起来基本都是体力活路,因为要转的方式不算太多,很多都是有重复的,而且我对这方面的积累还算可以吧,很早以前看过这方面的资料和书,还是把程序全部转成Unicode了,不过底层的使用ASCII的函数都不用动,这点倒是出乎我的预计,所以工作量小了不少。
    2014年6月26日 9:59