我正在使用VC 9,我想为我的应用程序支持俄语。我甚至创建了俄语资源字符串。但我的系统有俄语设置。如果不是每个角色都显示垃圾(其代码页为1251)。我还从俄罗斯资源文件中制作了DLL。如果我从安装的位置在应用程序中运行该DLL,它工作正常。 但是,当我将计算机设置更改为英语并从appilcation运行该DLL时,对话框和消息框显示垃圾字符。但不应该从DLL读取应用程序,而不是从计算机语言设置?在这里,我面临着如何制作与语言无关的DLL的问题。这个的任何代码或设置?
答案 0 :(得分:4)
到目前为止,最简单的解决方案是坚持使用Unicode。
Windows内部是Unicode。 (几乎)每个API函数都有两种变体,FooA和FooW。在调用FooW之前,FooA变体将char转换为wchar_t。确切的转换由代码页定义。
现在,如果您使用Unicode,则没有此类转换,也没有代码页。如果用户输入ж(U + 0436,它存储为wchar_t(0x0436)并且从未转换。如果您的资源包含Unicode的Unicode,它也不会被转换。
答案 1 :(得分:0)
如果要显示的字符串无法在系统代码页中表示,则唯一的解决方案是Unicode。