2017-02-24 105 views
0

創建一個名爲「абцде」 文件時,文件名是用象形文字寫成QT - 如何設置文件名編碼到西里爾文

const QByteArray data = "someData"; // some Data 
QString fileName = "абцде.txt"; // fileName 
QFile localFile(fileName.toUtf8()); 
localFile.open(QIODevice::WriteOnly); 
localFile.write(data); 
localFile.close(); 
+0

你確定這與文件名有關嗎?使用非ASCII字符的原始字符串文字容易出現格式錯誤 - 這就是爲什麼Qt提供[QStringLiteral](http://doc.qt.io/qt-5/qstring.html#QStringLiteral)宏的原因。 – MrEricSir

回答

0

如果你的源UTF8編碼,那麼你應該使用這個(Qt Documentation

QString fileName = QString::fromUtf8("абцде.txt"); // fileName 

如果你的源代碼有其他編碼,那麼你可以選擇其他功能,如QString::fromLocal8Bit

+1

對Qt 4來說這是真的。在Qt 5中,你應該使用'QStringLiteral'! –

+0

@Kuba Ober在這個問題上,Qt版本沒有任何內容。我給出的答案將在任何地方都有效。 – Evgeny

0

這些行代碼形式qt男人我nternationalization 可以幫助。 (QString最初使用Unicode)。

QTextCodec *codec = QTextCodec::codecForName("Windows-1251"); 
QByteArray encodedString = codec->fromUnicode("абцде.txt"); 

您可能需要使用編碼(「Windows-1251」),這種蠻力方法。