У меня есть текстовый файл в кодировке UTF-8, в котором есть такие символы, как ², ³, Ç и ó. Когда я читаю файл, используя приведенное ниже, файл, кажется, читается соответствующим образом (по крайней мере, в соответствии с тем, что я вижу в редакторе Visual Studio при просмотре содержимого переменной contents
)
QFile file( filePath );
if ( !file.open( QFile::ReadOnly | QFile::Text ) ) {
return;
}
QString contents;
QTextStream stream( &file );
contents.append( stream.readAll() );
file.close();
Однако, как только содержимое преобразуется в std::string
, добавляются дополнительные символы. Например, ²
преобразуется в ²
, когда оно должно быть просто ². Это происходит для каждого не-ANSI символа, добавляется дополнительный Â
, что, конечно, означает, что при сохранении нового файла символы не являются правильными в выходном файле.
Я, конечно, пытался просто выполнить toStdString()
, я также пытался toUtf8
и даже пытался использовать QTextCodec
, но каждый не может дать правильные значения.
Я не понимаю, почему при переходе от файла UTF-8 к QString, а затем к std :: string теряются символы UTF-8. Он должен быть в состоянии воспроизвести точный файл, который был первоначально прочитан, или я что-то упустил полностью?