【发布时间】:2023-03-18 21:48:01
【问题描述】:
我有一个由 Windows API 函数(带有 LOCALE_SLONGDATE 的 GetLocaleInfoEx)作为 wchar_t 提供给我的字符串。说从 Windows 返回的值将是 UTF-16 是否正确,因此它可能不是一个 wchar_t,一个“可打印字符”?
为了使我的解析器更容易编写,是否有一个函数可以用来从 UTF-16 转换为 UTF-32,我可以保证(我假设)一个数组元素代表一个字符?
【问题讨论】:
-
通过查找和组合代理对自行执行转换。或者使用像 iconv 这样的库。
-
即使使用 UTF-32,您仍可能需要以某种方式处理组合标记。
-
我一直不清楚与 UCS-2 相比,Windows 对 UTF-16 的支持程度如何。
-
Unicode 是基于排版人员的选择。谁是非常明智的人,当你在铅块周围走动时,你必须是谋生的。日期字符串经常出现在印刷文本中,它们的字形每个只占一个前导块。您必须处理无法在旧代码页或 Unicode 版本 1 中表示或需要组合字符的字形的可能性为零。
-
我相信可以自定义语言环境,因此您绝对可以得到任何东西。但出于同样的原因,即使我们不担心 Unicode,也无法合理地解析它们。您实际上想在这里实现什么目标?