【发布时间】:2021-06-15 03:49:51
【问题描述】:
在 Windows 上的 C++ 中,如何将 &#xhhhh; 形式的 xml 字符引用转换为 utf-16 little endian 字符串?
我在想如果 hhhh 部分是 4 个字符或更少,那么它是 2 个字节,适合一个 utf-16 字符。但是,这个wiki page has a table of character references 和底部附近的一些是 5 位十六进制数字,不适合两个字节。它们如何转换为 utf-16?
我想知道MultiByteToWideChar 函数是否能够完成这项工作。
我对大于 2 个字节的代码点如何转换为 utf-16 的理解不足! (或者就此而言,我不太确定如何将大于 1 字节的代码点转换为 utf-8,但这是另一个问题)。
谢谢。
【问题讨论】:
-
MultiByteToWideChar完全不适合这项任务。 -
将代码点转换为 UTF-16 的算法在 Wikipedia 上有描述,请参阅 UTF-16
-
@RemyLebeau 但这个问题中更大的问题是首先将每个字符串
&#xhhhh;转换为代码点。完成此操作后,您的建议可能会有所帮助。 -
@MarkRansom 将 XML 字符引用解析为数字代码点值很简单。特别是如果您使用实际的 XML 解析器并让它为您完成工作
标签: c++ windows unicode unicode-escapes