我正在寻找示例 1 字节、2 字节、3 字节、4 字节、5 字节和 6 字节 unicode 字符。任何指向所有不同 unicode 字符的某种引用的链接以及它们有多大(按字节)将不胜感激。我希望这个参考也有像\uXXXXX
.
4 回答
没有“1 字节、2 字节、3 字节、4 字节、5 字节和 6 字节的 Unicode 字符”之类的东西。
您可能会谈论 Unicode 字符的 UTF-8 表示。同理,Java 中的字符串内部是用 UTF-16 表示的,所以 Javachar
类型代表了一个 UTF-16 的 16 位代码单元,每个 Unicode 字符都可以用这些代码单元中的一个或两个来表示,每个代码单元可以表示为\uxxxx
字符串文字(请注意,这些序列中只有 4 个十六进制数字,因为代码单元是 16 位长)。
因此,如果您需要 Unicode 字符及其 UTF-8 和 UTF-16 表示形式的参考,您可以查看fileformat.info 中的表格。
也可以看看:
正如 axtavt 所指出的,n 字节 Unicode 字符的概念是没有意义的;假设您的意思是 UTF-8,那么可能会帮助您进行测试等的一个非常简单的表可能如下所示。请注意,所有示例字符都可以在我的浏览器(Ubuntu 上的 Chrome)上使用,但您的里程可能会在显示、复制/粘贴等方面有所不同。
UTF-8 bytes Start End Example Character
1 U+0000 U+007F ! EXCLAMATION MARK U+0021)
2 U+0080 U+07FF ¶ PILCROW SIGN (U+00B6)
3 U+0800 U+FFFF ‱ PER TEN THOUSAND SIGN (U+2031)
4 U+10000 U+1FFFFF MUSICAL SYMBOL SIXTEENTH NOTE (U+1D161)
理论上,UTF-8 中可以有 5 个或 6 个字节的值,但 Unicode 的 32 位地址空间实际上被限制为最大 10FFFF,因此不需要超过 4 个字节。
请注意,这里有一个重要的警告:Java不是Unicode 字符;char
它不是 Unicode 字符。它是 UTF-16 的 16 位代码单元,经常看到将非 BMP 字符(如上面的 U+1D161)视为 2 个字符的数据流,并相应地使用 UTF-8。例如:
Character: U+1D161
UTF-8 encoding: 0xF0 0x9D 0x85 0xA1
UTF-16 encoding: 0xD834 0xDD61
UTF-16 code points individually encoded as UTF-8: 0xED 0xA0 0xB4 0xED 0xB5 0xA1
请注意,这具有明显显示 6 字节 UTF-8 字符的效果,但实际上 UTF-8 不允许这样做。UTF-8 必须是原始代码点的编码,而不是代表这些点的 UTF-16 代码单元的编码。这并不意味着你在野外看不到它......
对于那些只追求实际样品的人这里有 4 个样品。
- a (1 字节, 0x61)
- µ(2 字节,0xb5)
- →(3字节,0x2192)
- (4 字节,0x1f431)
我不完全确定为什么 0xb5 是 2 个字节而 0x2192 是三个字节。也许有人可以解释。