【发布时间】:2013-01-22 13:48:59
【问题描述】:
在我的程序中,我使用wstring 打印出我需要的文本,但它给了我随机密码(由于不同的编码方案)。例如,我有这个代码块。
wstring text;
text.append(L"Some text");
然后我使用 directX 在屏幕上渲染它。我曾经使用wchar_t,但听说它有便携性问题,所以我切换到swtring。 wchar_t 工作得很好,但它似乎只取了我能说的英文字符(打印输出完全忽略输入的非英文字符),这很好,直到我切换到wstring:我只有随机密码看起来像中国人和韩国人混在一起。有趣的是,我的非 unicode 文本的计算机区域设置是中文。根据我所看到的,我怀疑它会正确呈现汉字,所以我尝试了一下,它确实正确显示了字符,但前面有一个正方形(这仍然是一种不正确的显示)。然后我猜测编码可能取决于语言区域所以我将区域设置切换为英语(美国)(我使用 win8),然后我重新启动并看到源文件中的中文测试字符变成了一些随机的东西(我的文件没有保存在 unicode 格式,因为所有文本都是英文)然后我尝试使用英文字符,但没有运气,显示看起来完全一样,与语言环境无关。但我不明白为什么它不能正确显示并且看起来像亚洲字符(即使我使用英语语言环境)。
是否应该进行一些转换,或者我应该以不同的编码格式保存我的文件?问题是我想正确显示英文字符,这是默认值。
【问题讨论】:
-
每个软件开发人员绝对、肯定必须了解 Unicode 和字符集的绝对最低要求:joelonsoftware.com/articles/Unicode.html
-
@Laurent 但它如何帮助我解决这个问题?
-
@ryf9059:它提供了有关这些类型问题的背景信息。
标签: c++ text character-encoding