2012-02-29 24 views
1

Qt 4.7.2を使用してCP-1251エンコーディングでバイナリファイルにchar配列を書き込むにはどうすればよいですか?
特定のエンコーディングでバイナリファイルに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(); 



UPD:解決策が見出されています。 :>

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(); 

は、あなたがすべてで、ここではQtを使用していないのUbuntu 11.04、ENG

+0

QTextCodec :: fromUnicode()はQByteArrayであり、ファイルに格納しようとすることができます。 – Kunal

答えて

0

に正常に動作します。 QTextCodec::setCodecForCStringsは、QStringがchar *をどのように読み取るかを決定し、確かに標準ライブラリがテキストを書き込む方法を制御できません。

Qtでこれを行う場合は、QTextStreamを使用して適切なコーデックを設定します。

関連する問題