使用Qt检测并打印Unicode字符

时间:2012-01-20 12:21:22

标签: c++ qt unicode utf-8

我正在尝试阅读和打印可能包含或不包含UTF-8代码的文件。

我的示例文件包含:


\ u22a2

我的niave代码:

    QFile file("/path/qteststream.txt");

    if(!file.open(QIODevice::ReadOnly | QIODevice::Text ))
        std::cout << "Fail" << std::endl;

    QTextStream stream(&file);
    QTextStream qout(stdout);
    stream.setAutoDetectUnicode(true);

    while(!stream.atEnd())
      qout << stream.readLine() << endl;

但显然,我做错了什么。我希望\ u22a2打印为unicode字符,但程序只打印字符串。如何将这些序列打印为字符?

2 个答案:

答案 0 :(得分:4)

\u22a2可能被C ++编译器解释为Unicode字符,但外部源代码的内容不同。在文本文件中,\u22a2仅为6个字符(\u22a和{{1} })相继。尝试直接将2粘贴到文本文件中。

如果您故意在文本文件中使用并希望将其转换为Unicode字符,则可能需要检查this post

答案 1 :(得分:1)

\u转义码仅用于C / C ++文件,不用于输入文件。 &#34; Unicode自动检测&#34;表示该文件可以是UTF-8(ASCII作为子集也可以),或者是带有BOM的UCS-2,这对您的应用程序是透明的。