将 std::string 转换为 QString
我知道 std::string content
包含 UTF-8 数据。我想将其转换为 QString
。我该如何做到这一点,避免 Qt 中的 from-ASCII 转换?
I've got an std::string content
that I know contains UTF-8 data. I want to convert it to a QString
. How do I do that, avoiding the from-ASCII conversion in Qt?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(4)
这更好,因为它更稳健。
另请注意,如果
std::string
以 UTF-8 编码,那么它应该给出与QString::fromUtf8(content.data(), int(content.大小()))
。This is better since it is more robust.
Also note, that if
std::string
is encoded in UTF-8, then it should give exactly the same result asQString::fromUtf8(content.data(), int(content.size()))
.有一个名为
fromUtf8
的QString
函数需要一个const char*
:There's a
QString
function calledfromUtf8
that takes aconst char*
:由于 Qt5 fromStdString 内部使用 fromUtf8,因此您可以同时使用两者:
Since Qt5 fromStdString internally uses fromUtf8, so you can use both:
通常,进行转换的最佳方法是使用方法 fromUtf8,但问题是当你的字符串依赖于语言环境时。
在这些情况下,最好使用 fromLocal8Bit。例子:
Usually, the best way of doing the conversion is using the method fromUtf8, but the problem is when you have strings locale-dependent.
In these cases, it's preferable to use fromLocal8Bit. Example: