2011-03-29 29 views
3

我已阅读乔尔的文章,并做了大量的搜索。 Unicode上的每个站点和文章都会讨论每个代码点如何有16位,但Unicode支持Unicode平面以上的2^16个代码点。在Unicode字符串中,平面是如何表示的(或者它们不是)?

但没有解释如何一个Unicode字符串指示飞机。此外,这留下了Unicode字符串如何能够保存来自多个平面的字符的问题。

那么,Unicode字符串如何显示飞机?

+1

Unicode没有每个代码点16位。它是每码点21位。 – tchrist 2011-03-30 11:43:57

+1

“每个站点和关于Unicode的文章都会讨论每个代码点如何有16位” - 然后每个站点和文章都是错误的。 Unicode代码点是从0到大约的整数。一百万,不能以16位字存储。 – Philipp 2011-03-30 13:50:10

+0

UTF-2^32任何人? – dfb 2011-03-30 16:07:11

回答

2

有人可以随时纠正我这一点,我仍然自己学习Unicode。

我认为你的困惑是在代码点和编码如何表示代码点之间。每个代码点的位数/字节数将取决于您的编码。我们来看一下最简单的UTF-32例子。 UTF-32使用,请使用滚筒滚筒 - 每个代码点有32位。它可以直接代表每个平面中的每个Unicode字符。 UTF-16是一种可变长度编码。它将每个代码点编码在一个或两个代码单元中。第一架飞机用一个代码单元表示。其余的,你可以在这里阅读更多关于它的信息。 http://en.wikipedia.org/wiki/UTF-16http://en.wikipedia.org/wiki/UTF-8

实质上,如果编码支持特定的平面,它们就在那里并在编码中表示。在UTF-32的情况下,它比其他的更清楚。

2

我写了一章在一个开源项目的手册中解释了这个主题(和一些其他的Unicode问题)。这里是链接到PDF manual(阅读第10章)。这里是该手册的HTML version中该章节的链接。

相关问题