首页 > 解决方案 > 读取带有德语文本的 *.txt 文件,在我的 GUI 中显示它——带有变音符号的字符不正确

问题描述

我的世界是:MFC,Visual Studio C++,使用 MBCS 字符集。通常使用 CString 作为我最喜欢的字符串类型,但有时也使用 std:string。

我可以将德语单词放在我的字符串表中,它们会很好地显示在 GUI 中 - 充满可爱的变音符号和其他口音。但是,如果我有一个包含带有变音符号的德语文本的 *.txt 文件,当我读入它(使用 CStdioFile)然后在 GUI 中显示它时,变音符号和其他特殊字符不能很好地打印,而是出现 für 之类的东西(应该是“毛皮”,在 u 上有一个变音符号)。

如何阅读 *.txt 德语文本文件并在 GUI 中显示?以为这很简单。我可以发誓我以前做过,没有问题。在此先感谢您的帮助!

标签: c++mbcs

解决方案


问题可能是您的输入文件以UTF-8编码,而您的查看器使用代码页Windows-1252将其解释为单字节编码。

编码字符串时

für

在 UTF-8 中,您会得到以下字节:

0x66 0xc3 0xbc 0x72

字符fr每个都被编码成一个字节,而字符ü被编码成两个字节。

这些字节对应于

für

在代码页 Windows-1252 中。

在您的问题中,您说这für是您为 string 获得的输出für。因此,我所说的似乎是对输出的最明显的解释。


推荐阅读