Text UTF16如何编码字符?

Text UTF16如何编码字符?,text,unicode,encoding,character-encoding,language-agnostic,Text,Unicode,Encoding,Character Encoding,Language Agnostic,编辑 因为我似乎无法得到一般问题的答案。我将仅限于一个细节:我对以下内容的理解是否正确 代理的工作方式如下: 如果第一对字节不在D800和DBFF之间,则存在 不会是第二对。 如果在D800和DBFF-a之间,则会有第二对b 第二对将在DC00和DFFF范围内。 没有值介于D800之间的单对UTF16字符 和DBFF。 没有值介于DC00之间的单对UTF16字符 和DFFF。 是这样吗 原始问题 我试着读过关于UTF16的书,但我似乎不明白。什么是平面和代理等。?平面是第一个字节的前5位吗?如果

编辑

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

代理的工作方式如下:

如果第一对字节不在D800和DBFF之间,则存在 不会是第二对。 如果在D800和DBFF-a之间,则会有第二对b 第二对将在DC00和DFFF范围内。 没有值介于D800之间的单对UTF16字符 和DBFF。 没有值介于DC00之间的单对UTF16字符 和DFFF。 是这样吗

原始问题

我试着读过关于UTF16的书,但我似乎不明白。什么是平面和代理等。?平面是第一个字节的前5位吗?如果是这样的话,既然我们使用的是这5位,为什么不使用32个平面呢?什么是代理?它们对应于哪些位

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

但我不想继续讲我不懂的东西,也许有人可以在这方面下些命令?

四个都是

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


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

@down投票者也愿意帮忙吗?我怀疑他们是因为。你有关于这个问题的问题吗?@TomBlodget谢谢。我不知道我该如何表现出这种努力。包括我读过但不理解的文章的链接?这对这个问题有什么帮助?但无论如何,你可能是对的,这就是为什么它被否决的原因。我现在正在阅读你提供给我的链接。谢谢。@TomBlodget我很难理解那里的实际代码,我熟悉C,不是C,但基本上我知道如果第一对字节在D800和DBFF之间,那么就需要第二对字节。但是后面的代理是什么意思呢?它们似乎意味着,如果第二对字节介于DC00和DFFF之间,则需要第二对字节。当然,这没有任何意义。我只是想验证一下,当我在4个问题中写pair时,你是否理解,我指的是一对字节。单对表示一个由2字节表示的字符,而不是4字节。谢谢你们的帮助。如果没有你的帮助,我甚至无法提出修改后的问题。尤其