使用特定编码将char数组写入二进制文件

时间:2012-02-29 07:39:12

标签: qt

如何使用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

上正常工作

1 个答案:

答案 0 :(得分:0)

你根本就没有使用过Qt。 QTextCodec::setCodecForCStrings确定QString如何读取char *,当然无法控制标准库选择如何写文本。

如果您确实想使用Qt执行此操作,请使用QTextStream并在其上设置相应的编解码器。