【发布时间】:2021-07-31 07:28:38
【问题描述】:
我有一个 Unicode 字符串,我需要知道它使用的字节数。
总的来说,我知道wcslen(s) * 2 会起作用。但我的理解是,这在使用 Unicode 时并不可靠。
是否有可靠且高效的方法来获取 Unicode 字符串使用的字节数?
【问题讨论】:
-
评论不用于扩展讨论;这个对话是moved to chat。
我有一个 Unicode 字符串,我需要知道它使用的字节数。
总的来说,我知道wcslen(s) * 2 会起作用。但我的理解是,这在使用 Unicode 时并不可靠。
是否有可靠且高效的方法来获取 Unicode 字符串使用的字节数?
【问题讨论】:
wcslen 计算wchar_t 实体的数量,直到找到 NUL 字符。它不会以任何方式解释数据。
(wcslen(s) + 1) * sizeof(wchar_t)将总是可靠地计算存储字符串s所需的字节数。
【讨论】:
2 适用于 Windows,其中 wchar_t 是 UTF-16,但不适用于其他 UTF-32 平台(因此是 4 个字节)。
wchar_t 为 2 个字节。
wchar_t 是 2 个字节,wcslen 报告 代码单元 的数量,直到任何给定字符串的第一个零终止符。它明确不涉及任何编码方面,并且不报告问题似乎暗示的代码点的数量。如果您在谈论 UTF-16,您指的是本问答不适用于的东西。