如何构建基于UTF8的字符串?

时间:2012-06-09 22:43:12

标签: java unicode

我想我可以使用\u****构建一个基于UTF16的字符,如何使用UTF8构造一个字符串?

2 个答案:

答案 0 :(得分:8)

Java中的字符串与编码无关(它们在内部使用UTF-16,但这并不重要)。您在\u之后输入的代码是Unicde 代码点,它们不是字符的实际二进制表示形式。每个字符都有一个关联的代码点。不同的编码定义了如何将代码点映射到给定的二进制represantation。

据说你使用代码点构造字符串,然后使用getBytes()方法将其转换为任意编码。例如Euro sign):

"\u20AC".getBytes("UTF-8");   //-30,  -126, -84
"\u20AC".getBytes("UTF-16");  //-2, -1, 32, -84
"\u20AC".getBytes("UTF-32");  // 0,  0, 32, -84

值得记住:UTF-16并不是真的一直使用16位!

答案 1 :(得分:4)

接受的答案很有用但实际上并没有说明如何从UTF-8数据构造字符串。

万一有人想知道答案,这里是:

byte[] bytes = ...; // UTF-8 bytes.
String string = new String(bytes, "UTF-8");