我正在寻找样本1字节,2字节,3字节,4字节,5字节和6字节的unicode字符。任何指向所有不同unicode字符的引用的链接以及它们有多大(按字节顺序)都将非常感激。我希望这个引用也有像\uXXXXX
这样的代码点。
答案 0 :(得分:8)
没有“1字节,2字节,3字节,4字节,5字节和6字节unicode字符”这样的东西。
您可能会谈论Unicode字符的UTF-8表示。类似地,Java中的字符串在内部以UTF-16表示,因此Java char
类型表示UTF-16的16位代码单元,并且每个Unicode字符可以由一个或两个这些代码单元表示,并且每个代码单元可以在字符串文字中表示为\uxxxx
(请注意,这些序列中只有4个十六进制数字,因为代码单元长度为16位)。
因此,如果您需要使用UTF-8和UTF-16表示形式引用Unicode字符,您可以查看the table at fileformat.info。
另见:
答案 1 :(得分:7)
正如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的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代码单元的编码。这并不意味着你不会在野外看到它......
答案 2 :(得分:3)
答案 3 :(得分:0)
对于那些只追求实际样品的人 这里有 4 个样本。
我不完全确定为什么 0xb5 是 2 个字节而 0x2192 是三个字节。也许有人可以解释一下。