我有这样的UTF-8文字:
String literal = "\x6c\x69b/\x62\x2f\x6d\x69nd/m\x61x\x2e\x70h\x70";
我需要阅读它们并将它们转换成纯文本。
java中是否有可以解释这些内容的导入?
谢谢。
答案 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");