字符编码知识:UTF16

宇托 6 0 条

UTF16在最初时的设计想法是定长(2Byte)字符编码。在Unicode编码为U+0000到U+FFFF之前,它和Unicode编码是一样的,也就是说那个时候UTF16和Unicode是完全一样的。

但2002年之后,Unicode编码扩展到了U+10FFFF,UTF16对于超过U+FFFF的部分就无法用2Byte来表示U+10000到U+10FFFF的字符了,幸好Unicode编码没有定义从U+D800到U+DFFF的码位,于是UTF16就用4Byte来表示U+10000到U+10FFFF的字符。并用D8到DF来表示这是4Byte字符。具体方法如下:

<span style="font-weight: bold;">UTF-16解码</span>

<span lang="zh-CN" style="color: #ff7000;">lead</span><span lang="en-US">  </span><span lang="en-US" style="color: #0070ff;">trail</span> <p style="color: #0070ff;"><span style="font-weight: bold;">DC00</span></p> <p style="color: #0070ff;"><span style="font-weight: bold;">DC01</span></p> <p lang="en-US" style="color: #0070ff;"><span style="font-weight: bold;">   …   </span></p> <p style="color: #0070ff;"><span style="font-weight: bold;">DFFF</span></p>
<p style="color: #ff7000;"><span style="font-weight: bold;">D800</span></p> 10000 10001 103FF
<p style="color: #ff7000;"><span style="font-weight: bold;">D801</span></p> 10400 10401 107FF
<p style="color: #ff7000;"><span lang="en-US" style="font-weight: bold;">  </span><span lang="x-IV_mathan" style="font-weight: bold;">⋮</span></p>
<p style="color: #ff7000;"><span style="font-weight: bold;">DBFF</span></p> 10FC00 10FC01 10FFFF
发表我的评论

Hi,您需要填写昵称和邮箱!

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址