如何使用 QString 指定 unicode 字符?
如何使用 QString 通过代码(例如“4FF0”)指定 unicode 字符?我尝试了 QString s("\u4FF0");
但它只输出一个问号。知道如何做到这一点吗?
编辑:
就是这样,但是有更直接的方法吗?
std::wstring str = L"\u4FF07";
QString s = QString::fromStdWString(str));
How can I specify a unicode character by code (such as "4FF0") using QString? I tried QString s("\u4FF0");
but it only outputs a question mark. Any idea how to do this?
Edit:
It works that way, but is there a more direct way?
std::wstring str = L"\u4FF07";
QString s = QString::fromStdWString(str));
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(5)
显然 '\u' 只适用于 UTF-8:
Apparently '\u' only works with UTF-8:
从 C++11 开始,您可以使用 UTF-8 字符串文字前缀 (
u8
):Since C++11 you can use UTF-8 string literal prefix (
u8
):作为直接指针,请尝试 QString(QChar(0x4FF0));
您需要确保您拥有正确的 utf-16 编码。
As a direct pointer, try QString(QChar(0x4FF0));
You need to ensure you have the correct utf-16 encoding.
QChar
仅限于 16 位,因此它们不能表示0xffff
以上的数字。来自 Qt 文档 (6.2):尝试在
QChar
中存储更大的值将触发断言错误:ASSERT: rc <= 0xffff
。但 Unicode 需要更多空间。 Unicode 标准 15.1 已经定义了 149,641 个字符,对于 16 位来说太多了。因此
QChar
不能用于存储任意 Unicode 字符。QChar
s are limited to 16 bits, so they cannot represent numbers above0xffff
. From the Qt docs (6.2):Trying to store a larger value in a
QChar
will trigger an assertion error:ASSERT: rc <= 0xffff
.But Unicode needs more space. The Unicode standard 15.1 already defines 149,641 characters, too much for 16 bits. So a
QChar
cannot be used to store an arbitrary Unicode character.如果直接指的是使用 Unicode 代码点值,则
QChar
可能是:If by direct you mean using a Unicode code point value, then
QChar
may be it: