UTF16如何编码字符?

时间:2017-05-29 13:20:26

标签: text unicode encoding character-encoding language-agnostic

修改

因为我似乎无法得到一般性问题的答案。我将其限制在一个细节:我对以下内容的理解是否正确?

代理人的工作如下:

  1. 如果D800和DBFF之间的第一对字节那里 不会是第二对。
  2. 如果它在D800和DBFF之间 - a)将有第二对b) 第二对将在DC00和DFFF的范围内。
  3. 没有单对UTF16字符,其值介于D800之间 和DBFF。
  4. 没有单对UTF16字符,其值介于DC00之间 和DFFF。
  5. 这是对的吗?

    原始问题

    我已经尝试过阅读UTF16,但我似乎无法理解它。什么是"飞机"和#34;代理人"等等。?是一架飞机"第一个字节的前5位?如果是这样,那么为什么不是32架飞机,因为我们还在使用这5位?什么是代理人?它们对应哪些位?

    我确实理解UTF16是一种编码Unicode字符的方法,它有时使用16位编码字符,有时32位,不多也不少。我假设前两个字节有一些值列表(哪些是最重要的?),表示将出现第二个2字节。

    但是,不是我继续谈论我

1 个答案:

答案 0 :(得分:1)

全部四个都是。

为了澄清,UTF-16中的术语“对”是指两个UTF-16代码单元,第一个在D800-DBFF范围内,第二个在DC00-DFFF中。

代码单元是16位(2字节),通常写为十六进制(0x000A)的无符号整数。字节的顺序(0x00 0x0A或0x0A 0x00)由作者指定或在文件或流的开头用BOM(0xFEFF)表示。 (BOM使用与文本相同的算法进行编码,但不是文本的一部分。一旦确定了字节顺序并且字节被重新排序到系统的本机排序,它通常会被丢弃。)