【问题标题】:ArgumentOutOfRangeException when converting UTF-32 (HEX) to string将 UTF-32 (HEX) 转换为字符串时出现 ArgumentOutOfRangeException
【发布时间】:2015-03-15 23:27:47
【问题描述】:

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

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

使用此代码时

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

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

【问题讨论】:

  • 它是一个代理,本身无效。

标签: c# hex utf-32


【解决方案1】:

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

这就是错误说的原因

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

【讨论】:

  • 如何转换这些类型的十六进制
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2016-08-28
  • 2015-10-03
  • 2011-12-05
  • 2014-01-20
  • 2016-06-04
  • 2014-07-03
  • 2014-09-23
相关资源
最近更新 更多