我std::string content
知道包含UTF-8数据。我想将其转换为QString
。如何避免在Qt中从ASCII转换?
Answers:
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)
。
通常,进行转换的最佳方法是使用fromUtf8方法,但是问题是当您具有依赖于语言环境的字符串时。
在这些情况下,最好使用fromLocal8Bit。例:
std::string str = "ëxample";
QString qs = QString::fromLocal8Bit(str.c_str());
QString::fromUtf8( content.data(), content.size() )