我想我可以使用\u****
构建一个基于UTF16的字符,如何使用UTF8构造一个字符串?
答案 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");