如何在QT流中将unicode转换为可打印的字符串

时间:2010-05-02 06:26:00

标签: qt encoding character-encoding

我正在写一个文件和stdout的流,但是我得到了这样的编码:

  

\ u05ea \ u05e7 \ u05dc \ u05d9 \ u05d8   \ u05e9 \ u05e1 \ u05d9 \ u05de \ u05dc   \ u05e9 \ u05d9 \ u05e0 \ u05d5 \ u05d9   \ u05d1 \ u05e1 \ u05d2 \ u05e0 \ u05d5 \ u05df   \ u05dc \ u05d3 \ u05e2 \ u05ea \ u05d9   \ u05d0 \ u05dd \ u05d0 \ u05e0 \ u05d9   \ u05d6 \ u05d5 \ u05db \ u05e8   \ u05e0 \ u05db \ u05d5 \ u05df

如何将其转换为可打印的字符串?

1 个答案:

答案 0 :(得分:3)

我无法弄清楚你是如何打印字符串的,但那只是Unicode:

#include <QString>
#include <QFile>
#include <QDebug>

int main(int argc, char **argv)
{

  QString s = "\u05ea\u05e7\u05dc\u05d9\u05d8 \u05e9\u05e1\u05d9\u05de\u05dc \u05e9\u05d9\u05e0\u05d5\u05d9 \u05d1\u05e1\u05d2\u05e0\u05d5\u05df \u05dc\u05d3\u05e2\u05ea\u05d9 \u05d0\u05dd \u05d0\u05e0\u05d9 \u05d6\u05d5\u05db\u05e8 \u05e0\u05db\u05d5\u05df";

  QFile file1("1.txt");
  if (!file1.open(QIODevice::WriteOnly | QIODevice::Text))
    return 1;

  QTextStream out(&file1);
  out << s << "\n";

  qDebug() << s;
  return 0;
}

如果我编译并运行它

g++ -lQtCore -I /usr/include/QtCore test.cpp 
./a.out 

我可以在控制台调试输出和文件中看到可打印的字符:

"תקליט שסימל שינוי בסגנון לדעתי אם אני זוכר נכון" 

所以你可能做错了什么或者看错了方向,你可以粘贴你的代码以便我们更好地帮助你吗?