2014-09-02 55 views
0

我想从URL编码的ASCII字节数组转换为Java中的UTF-8。从URL编码转换为UTF-8

输入的ASCII字符串Fa%C3%A7ade应该转换为输出UTF-8字符串Façade

+1

icza是正确的,你的投入不是ASCII和有不需要将ASCII转换为UTF-8,因为它是一个子集。 – 2014-09-02 07:40:02

回答

1

你输入的字符串不是ASCII而是一个URL编码的字符串。

可以像这样它进行解码:

String s = "Fa%C3%A7ade"; 
System.out.println(URLDecoder.decode(s, "UTF-8")); 

Java中的String被表示为字符阵列(char[]),它不以任何编码进行编码。当String转换为字节数组或字节数组转换为String时,编码起作用。

所以,如果你有一个字节数组是使用UTF-8编码的一个String,你可以将其转换为String这样的:

byte[] arr = {104, 101, 108, 108, 111}; 
String s = new String(arr, StandardCharsets.UTF_8); 
System.out.println(s); // Prints "hello" 

// Or your input string would be: 
arr = {70, 97, -61, -89, 97, 100, 101}; 
s = new String(arr, StandardCharsets.UTF_8); 
System.out.println(s); // Prints "Façade" 
+0

谢谢!你是对的 – user21399 2014-09-02 07:50:02

0

如何

new String (bytes, "UTF-8"); 
0

使用阿帕奇公地编解码器

byte[] bytes = StringUtils.getBytesUtf8(asciiString); 
String utfString = new String(bytes);