我在将部分UTF-32 HEX转换为字符串时遇到问题。我收到此错误消息
“有效的UTF32值介于0x000000和0x10ffff之间,包括和 不应包含代理代码点值(0x00d800~0x00dfff)。 参数名称:utf32“
使用此代码时
int decodedInt = Convert.ToInt32("D8F5", 16);
string decodedStr = char.ConvertFromUtf32(decodedInt);
当我使用这个HEX“9FDB”时,它没有任何问题。我做错了什么?
答案 0 :(得分:0)
UTF-16使用0xD800..0xDFFF范围内的代码点通过代理对编码基本多语言平面之外的代码点。它们永远不会出现在UTF-32编码的文本中。
这就是为什么错误说
不应包含代理代码点值(0x00d800~0x00dfff)