UNICODE字符的Char表示并不总是返回一个字符

时间:2019-11-22 10:05:48

标签: c# unicode char type-conversion

我有一个给定int的例程,该例程返回等效的UNICODE字符。不过,对于某些值,它不会重新调整字符,但会重新调整其(我认为)十六进制值。

例如:

17664 --->'䔀'// 正确!

但是

56384 --->'\ udc40'// 错误!!!

那是为什么?

1 个答案:

答案 0 :(得分:2)

代码0xdc40的字符是Low Surrogate

这意味着它是32位字符的一半(表示为16位低位替代字符加上16位高位替代UTF16字符),因此与实际字符不符。

>

这就是为什么输出显示'\udc40'而不是单个字符的原因。