【发布时间】:2019-01-29 07:38:21
【问题描述】:
我知道在某些情况下,某些字符在使用Encoding.Unicode.GetBytes() 时会占用更多空间。例如:
var value = Encoding.Unicode.GetBytes("????");,其中value.Length 为 4。
这不同于:
var value = Encoding.Unicode.GetBytes("a");,其中value.Length 为 2。
但是,我真的很好奇一些事情。是否有可能想出一组字符,使Encoding.Unicode.GetBytes() 返回奇数个字节,可能使用组合字符或其他方式?如果是这样,有人可以给我看一个这样的例子吗?如果不是,那是为什么呢?
【问题讨论】:
-
Encoding.Unicode是 UTF-16LE 编码。代码单元是一个 16 位的值。 -
有些Unicode编码可以有奇数个字节(最明显的例子是UTF8,简单的罗马字符(如'a')占一个字节,而三字节字符很多) . Wikipedia 上的 Unicode 条目对 Unicode 及其编码有很好的概述
-
@RaymondChen 旧事物 :) 谢谢,Raymond