在 Linux 上使用 wchar_t*
存储 UTF-16 编码的文本是否有意义?明显的问题是 wchar_t
在 Linux 上是四个字节,而 UTF-16 通常每个字符需要两个(或有时两组两个)字节。
我正在尝试使用完全可以做到这一点的第三方库,但它看起来很困惑。看起来事情搞砸了,因为在 Windows 上 wchar_t
是两个字节,但我只是想仔细检查一下,因为它是一个非常昂贵的商业图书馆,可能我只是不明白。
最佳答案
虽然可以将 UTF-16 存储在 wchar_t
中,但此类 wchar_t
值(或用作字符串的数组)不适合与任何标准一起使用采用 wchar_t
或指向 wchar_t
字符串的函数。因此,要回答您最初的问题“这有意义吗……?”,我会明确回答“否”。当然,您可以将 uint16_t
用于此目的,或者如果可用,也可以使用 C11 char16_t
,但我看不出有任何理由为什么后者更可取,除非您也是将使用 C11 函数来处理它(它们似乎还没有实现)。
关于c - Linux 上 UTF-16 的 wchar_t?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12865564/