在我的程序中,我曾经wstring
打印出我需要的文本,但它给了我随机密码(由于不同的编码方案)。例如,我有这段代码。
wstring text;
text.append(L"Some text");
然后我使用 directX 在屏幕上渲染它。我曾经使用wchar_t
过,但听说它有便携性问题,所以我切换到swtring
. wchar_t
工作得很好,但它似乎只用了我能说的英文字符(打印出来完全忽略输入的非英文字符),这很好,直到我切换到wstring
: 我只得到看起来像中文和韩文混合在一起的随机密码。有趣的是,我的非 unicode 文本的计算机区域设置是中文。根据我所看到的,我怀疑它会正确呈现汉字,所以我尝试了一下,它确实正确显示了字符,但前面有一个正方形(这仍然是一种不正确的显示)。然后我猜测编码可能取决于语言区域所以我将区域设置切换为英语(美国)(我使用 win8),然后我重新启动并看到源文件中的中文测试字符变成了一些随机的东西(我的文件没有保存以 unicode 格式,因为所有文本都是英文)然后我尝试使用英文字符,但没有运气,显示似乎完全相同,与语言环境无关。但我不明白为什么它不
是否应该进行一些转换,或者我应该以不同的编码格式保存我的文件?问题是我想正确显示英文字符,这是默认值。