如何将这些UTF-8文字转换为字符串?

时间:2011-11-04 04:50:40

标签: java

我有这样的UTF-8文字:

String literal = "\x6c\x69b/\x62\x2f\x6d\x69nd/m\x61x\x2e\x70h\x70";

我需要阅读它们并将它们转换成纯文本。

java中是否有可以解释这些内容的导入?

谢谢。

2 个答案:

答案 0 :(得分:4)

Java本身不支持UTF-8文字。 Java对Unicode的语言支持仅限于基于UTF-16的Unicode转义。

您可以使用Unicode转义在字符串文字中表达您的UTF-8字符,如下所示:

String literal = 
    "\u006c\u0069b/\u0062\u002f\u006d\u0069nd/m\u0061x\u002e\u0070h\u0070";

(假设没有输入错误......)

或者你可以(在这种情况下)用普通的ASCII字符替换转义。

请注意,从UTF-8到UTF16的转换通常不那么简单。 (在这种情况下很简单,因为\ xnn字符都小于0x80,因此每个字符代表一个Unicode代码点/单元。)


另一种方法是将UTF-8表示为字节数组,并将其转换为String; e.g。

byte[] bytes = new byte[]{
    0x6c, 0x69, 'b', '/', 0x62, 0x2f, 0x6d, 0x69, 'n', 'd', 
    '/', 'm', 0x61, 'x', 0x2e, 0x70, 'h', 0x70};
String str = new String(bytes, "UTF-8");

(同样,假设没有输入错误。)

答案 1 :(得分:1)

如果要读取文件中的字符,可以使用InputStreamReader将字符串所在的字符集转换为char的序列:

InputStream is = ...; // get the input stream however you want
InputStreamReader isr = new InputStreamReader(is, "charset-name");