1

我无法将一些 UTF-32 HEX 转换为字符串。我收到此错误消息

“有效的 UTF32 值介于 0x000000 和 0x10ffff(含)之间,并且不应包含代理代码点值(0x00d800 ~ 0x00dfff)。参数名称:utf32”

使用此代码时

int decodedInt = Convert.ToInt32("D8F5", 16);
string decodedStr = char.ConvertFromUtf32(decodedInt);

当我使用这个 HEX“9FDB”时,它可以正常工作。我究竟做错了什么?

4

1 回答 1

0

UTF-16 使用 0xD800..0xDFFF 范围内的代码点通过代理对对基本多语言平面之外的代码点进行编码。它们永远不会出现在 UTF-32 编码的文本中。

这就是为什么错误说

不应包含代理代码点值 (0x00d800 ~ 0x00dfff)

于 2015-01-17T12:46:54.447 回答