如何使用Qt 4.7.2使用CP-1251编码将char数组写入二进制文件?
以下代码不起作用,它以UTF-8编码保存数组:
QTextCodec* codec = QTextCodec::codecForName("Windows-1251");
QTextCodec::setCodecForCStrings(codec);
char* str = "абвгд";
ofstream out("/home/ivan/Binary/moo.bin");
out << str;
out.close();
更新:已找到解决方案。产品:&gt;
QTextCodec::setCodecForTr(QTextCodec::codecForName("UTF-8")); // Set encoding for QObject::tr
QTextCodec* codec = QTextCodec::codecForName("Windows-1251") ; // Set encoding for result data in file
QByteArray bytes = codec->fromUnicode(QObject::tr("Текст на русском языке")); // Encode data in cp-1251
// Write data to binary file
ofstream out("/home/ivan/Binary/moo.bin", ios::out | ios::binary);
out.write(bytes.constData(), bytes.size());
out.close();
在ubuntu 11.04,eng
上正常工作答案 0 :(得分:0)
你根本就没有使用过Qt。 QTextCodec::setCodecForCStrings
确定QString如何读取char *
,当然无法控制标准库选择如何写文本。
如果您确实想使用Qt执行此操作,请使用QTextStream并在其上设置相应的编解码器。