Java unicode在哪里可以找到示例N字节的unicode字符

时间:2011-05-19 18:23:53

标签: java unicode sample-data codepoint

我正在寻找样本1字节,2字节,3字节,4字节,5字节和6字节的unicode字符。任何指向所有不同unicode字符的引用的链接以及它们有多大(按字节顺序)都将非常感激。我希望这个引用也有像\uXXXXX这样的代码点。

4 个答案:

答案 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 个样本。

  1. a(1 个字节,0x61)
  2. µ(2 个字节,0xb5)
  3. →(3 个字节,0x2192)
  4. ?(4 个字节,0x1f431)

https://play.rust-lang.org/?version=stable&mode=debug&edition=2018&gist=ee0883bad3b1204f45889ea450a53cf4

我不完全确定为什么 0xb5 是 2 个字节而 0x2192 是三个字节。也许有人可以解释一下。