c++ - 读取带有德语文本的 *.txt 文件,在我的 GUI 中显示它——带有变音符号的字符不正确
问题描述
我的世界是:MFC,Visual Studio C++,使用 MBCS 字符集。通常使用 CString 作为我最喜欢的字符串类型,但有时也使用 std:string。
我可以将德语单词放在我的字符串表中,它们会很好地显示在 GUI 中 - 充满可爱的变音符号和其他口音。但是,如果我有一个包含带有变音符号的德语文本的 *.txt 文件,当我读入它(使用 CStdioFile)然后在 GUI 中显示它时,变音符号和其他特殊字符不能很好地打印,而是出现 für 之类的东西(应该是“毛皮”,在 u 上有一个变音符号)。
如何阅读 *.txt 德语文本文件并在 GUI 中显示?以为这很简单。我可以发誓我以前做过,没有问题。在此先感谢您的帮助!
解决方案
问题可能是您的输入文件以UTF-8编码,而您的查看器使用代码页Windows-1252将其解释为单字节编码。
编码字符串时
für
在 UTF-8 中,您会得到以下字节:
0x66 0xc3 0xbc 0x72
字符f
和r
每个都被编码成一个字节,而字符ü
被编码成两个字节。
这些字节对应于
für
在代码页 Windows-1252 中。
在您的问题中,您说这für
是您为 string 获得的输出für
。因此,我所说的似乎是对输出的最明显的解释。
推荐阅读
- hyperledger-fabric - CA 证书和 Fabric CA Server 中的 TLS 证书有什么区别?
- arrays - 在计算向量和的网格点时避免使用 for 循环
- ios - 是否可以使用代码切换透明模式?
- r - 图例标题位置使用拼凑?
- python - Selenium Python如何在另一个类中提取一个类?
- python - 填充输入框并在Python中选择第一个下拉值
- python - 如何从 django 的循环中跳过第一个元素
- javascript - JavaScript 中的数学
- google-cloud-platform - 谷歌云安全指挥中心不允许我进入
- ajax - 烧瓶会话没有传递给不同的功能