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