我正在尝试从 URI 获取源。据报告为 UTF-8。我还尝试过 ISO-8859-1、ISO-8859-1 Windows-1250 和 ISO-8859-2。
这是我最近尝试的代码(尝试 ISO-8859-2):
public static String getPage(String page,String charset) throws IOException{
URL url=new URL(page);
return org.apache.commons.io.IOUtils.toString(url.openConnection().getInputStream(),charset);
}
public static void main(String args[])throws Exception{
String page=getPage("http://buscon.rae.es/drae/srv/search?val=aba","ISO-8859-2");
System.out.println(page);
}
但结果是:
apä?ge“quita,aparta”,y este del gr。 á¼?Ï?αY³Îµ)
而不是:
(Del lat.apăge 'quita,aparta',y este del gr.ἄπαγε)。
同样,UTF-8(与其他代码和浏览器一起使用)和其他编码名称也会以类似的方式失败。
最佳答案
U+0103 (ă) 被编码为字节序列 C4 83
;该数据是 UTF-8。
该错误可能是由于您通过附加到 System.out
的 PrintStream
执行的其他转码操作造成的。这会将数据编码为 system encoding ,这可能是有损转换,如果写入的设备不使用匹配的编码,则可能会导致损坏。
您可以阅读有关 Windows 控制台的一些分析 here .
关于java - org.apache.commons.io.IOUtils.toString 错误解释 UTF-8,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11849624/