C++ 读取和显示UTF-8编码的汉字

C++ 读取和显示UTF-8编码的汉字,c++,windows,encoding,utf-8,C++,Windows,Encoding,Utf 8,我试图从UTF-8编码的文本文件中读取汉字,并将其存储在变量中。当我试图在控制台中打印它们时,它会在字符的位置显示问号 while(!fin.eof()) { fin.get(c); appendCharacterToWord(currentWord, c); } (我在Windows中工作,代码是C++)Windows控制台无法正确使用UTF8(或任何Unicode内容)。虽然有些东西可以使用cp65001等技巧,但它的核心部分(包括

我试图从UTF-8编码的文本文件中读取汉字,并将其存储在变量中。当我试图在控制台中打印它们时,它会在字符的位置显示问号

    while(!fin.eof())
    {
        fin.get(c);
        appendCharacterToWord(currentWord, c);
    } 

(我在Windows中工作,代码是C++)

Windows控制台无法正确使用UTF8(或任何Unicode内容)。虽然有些东西可以使用cp65001等技巧,但它的核心部分(包括MS的C库实现)都有问题(参见cp65001出现了什么问题。这是2010年报告的,但仍然…标记为“无法解决”的错误报告)Windows控制台基于UCS2,实际上,UTF-16仅限于基本的多语言平面。并非所有汉字都在BMP中,因此即使您操作正确,默认情况下也无法显示。它还取决于字体。这就是说,在五月份,我终于受够了这些关于在Windows中显示字符的问题,并写了一篇文章。由于中国方面的原因,这个问题不是完全重复的,但几乎是。谢谢。我将检查链接。Windows控制台无法正确使用UTF8(或任何Unicode内容)。虽然有些东西可以使用cp65001等技巧,但它的核心部分(包括MS的C库实现)都有问题(参见cp65001出现了什么问题。这是2010年报告的,但仍然…标记为“无法解决”的错误报告)Windows控制台基于UCS2,实际上,UTF-16仅限于基本的多语言平面。并非所有汉字都在BMP中,因此即使您操作正确,默认情况下也无法显示。它还取决于字体。这就是说,在五月份,我终于受够了这些关于在Windows中显示字符的问题,并写了一篇文章。由于中国方面的原因,这个问题不是完全重复的,但几乎是。谢谢。我会检查链接。