将UTF-32(HEX)转换为字符串时的ArgumentOutOfRangeException

时间:2015-01-17 12:39:24

标签: c# hex utf-32

我在将部分UTF-32 HEX转换为字符串时遇到问题。我收到此错误消息

  

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

使用此代码时

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

当我使用这个HEX“9FDB”时,它没有任何问题。我做错了什么?

1 个答案:

答案 0 :(得分:0)

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

这就是为什么错误说

  

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