QString::fromUtf8(str) 和 \u 编码的字符序列

QString::fromUtf8(str) and \u encoded character sequences

我使用带有 \u 编码序列的字符串文字,将它们传递给 QString::fromUtf8,就像在 QString::fromUtf8("Precio (\u20AC/k)"); 中一样,成功了,但是,我有点挣扎,并阅读cppreference 和其他来源,我不清楚 \u20AC 序列是如何翻译成二进制的。

换句话说,QString::fromUtf8 代替 \u20AC 序列是什么? 20AC 代码点的 UTF-8 表示形式?它的 UTF-16 表示形式?或者什么?

我读过的大多数资料都说它被翻译成它的 UTF-16 表示,这意味着我在将该字符串传递给 fromUtf8 时做错了,但是,它总是工作正常。

我做的对不对?

无前缀字符串文字的编码 "..." 是实现定义的。在许多非 Windows 编译器上,它默认为 UTF-8,尽管有时可能会更改;对于 GCC,此开关是 -fexec-charset (docs)。

为了获得独立于执行字符集的字符串文字的 UTF-8 编码,C++11 引入了 u8"..." (cppreference)