c - Linux 上 UTF-16 的 wchar_t?

标签 c linux unicode utf-16 wchar-t

在 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/

相关文章:

c - 冒泡排序逻辑,迭代次数

c - 如果堆栈是 'flipped',你还能使用缓冲区溢出来执行 shell 代码吗?

c++ - 找到广场上的所有水坑(算法)

Linux下的编译问题

vim - 如何在 Vim 中使用 UTF-8 序列输入 Unicode 字符?

交互式 ocaml 解释器与另一个进程之间的通信

linux - poll/epoll 处理是否在中断上下文中?

php - UTF-8贯穿始终

javascript - 在 Node.JS 中加载 EUC-JP 和其他日语文本编码

ios - 如何在 iOS 上使用平面表情符号