Мені std::string content
відомо, що я знаю, що містить дані UTF-8. Я хочу перетворити його на QString
. Як це зробити, уникаючи перетворення з-ASCII у Qt?
Відповіді:
Там є QString
функція називається , fromUtf8
що бере const char*
:
QString str = QString::fromUtf8(content.c_str());
std::string
кодованої в UTF8 (насправді кодування не вказано), тому ця відповідь не зовсім правильна. Принаймні, вам слід перевірити кодування твердженням.
QString::fromStdString(content)
краще, оскільки він більш надійний. Також зауважте, що якщо std::string
він закодований в UTF-8, то він повинен дати точно такий же результат, як QString::fromUtf8(content.data(), int(content.size()))
.
std::string
кодованої в UTF8 (насправді кодування не вказано), тому результати QString::fromUtf8(content.data(), int(content.size()))
можуть бути різними (а також неправильними), ніж QString::fromStdString(content)
.
Зазвичай найкращий спосіб перетворення - використання методу з Utf8 , але проблема полягає в тому, що у вас є рядки, які залежать від мови.
У цих випадках переважно використовувати fromLocal8Bit . Приклад:
std::string str = "ëxample";
QString qs = QString::fromLocal8Bit(str.c_str());
QString::fromUtf8( content.data(), content.size() )