Próbuję utworzyć zakodowany plik UTF-8 w Qt.Utwórz plik UTF-8 w Qt
#include <QtCore>
int main()
{
QString unicodeString = "Some Unicode string";
QFile fileOut("D:\\Temp\\qt_unicode.txt");
if (!fileOut.open(QIODevice::WriteOnly | QIODevice::Text))
{
return -1;
}
QTextStream streamFileOut(&fileOut);
streamFileOut.setCodec("UTF-8");
streamFileOut << unicodeString;
streamFileOut.flush();
fileOut.close();
return 0;
}
myślałem kiedy QString jest domyślnie Unicode i kiedy ustawić kodek strumienia wyjściowego na UTF-8, że mój plik będzie UTF-8. Ale tak nie jest, to ANSI. Co mam zrobić źle? Czy coś jest nie tak z moimi strunami? Czy możesz poprawić mój kod, aby utworzyć plik UTF-8? Następnym krokiem dla mnie będzie odczytanie pliku ANSI i zapisanie go jako pliku UTF-8, więc będę musiał wykonać konwersję na każdym ciągu odczytu, ale teraz chcę zacząć od pliku. Dziękuję.
Powinieneś przekonwertować ciąg literału na ciąg znaków za pomocą QString :: fromUtf8(). Ponadto niektóre kompilatory mają problemy z kodowaniem innym niż ascii w plikach źródłowych (MSVC).Więc może również spróbuj, jeśli działa przy wprowadzaniu łańcucha przez np. QInputDialog. Proponuję również zdefiniować QT_NO_CAST_FROM_ASCII i QT_NO_CAST_TO_ASCII podczas napotykania takich problemów. Wyłącza niejawne konwersje, dzięki czemu jest bardziej przejrzyste, co się dzieje. –
http://stackoverflow.com/questions/29485602/qt-convert-unicode-entites – trante