JAVAutil。扫描仪和维基百科
我正在尝试使用java。util。扫描器获取维基百科内容并用于基于单词的搜索。 事实上,这一切都很好,但当读一些单词时,它会给我错误。 查看代码并进行一些检查,结果发现,使用一些单词 不识别编码,或者这样,内容就不再可读了。 这是用于获取页面的代码:
开始-
try {
connection = new URL("http://it.wikipedia.org
wiki/"+word).openConnection();
Scanner scanner = new Scanner(connection.getInputStream());
scanner.useDelimiter("\\Z");
content = scanner.next();
// if(word.equals("pubblico"))
// System.out.println(content);
System.out.println("Doing: "+ word);
//End
问题出现在意大利语维基百科的“pubblico”一词上。 单词pubblico上的println结果如下(剪切): èèè½]Ksr>;èè½~E ï½1Aï½ï½ï½ï½Eï½ER3tHZï½4vï½ï;PZjtcè½è½è½è½è½è½è½=8è½è½è
你知道为什么吗?然而,从页面源代码和页眉来看是相同的,具有相同的编码
原来内容是压缩的,所以我可以告诉维基百科不要给我压缩的teir页面,或者这是唯一的方法吗?多谢各位
# 1 楼答案
尝试使用
Reader
而不是InputStream
——我认为它是这样工作的:您也可以直接将字符集传递给Scanner构造函数,如另一个答案所示
# 2 楼答案
尝试使用具有指定字符集的扫描仪:
对于默认构造函数:
Scanner on java.sun.com
# 3 楼答案
需要使用} 时要使用的字符编码
URLConnection
,以便确定响应中的content-type header。这应该告诉您create your ^{具体来说,请查看内容类型头的“charset”参数
要抑制gzip压缩,请set the accept-encoding header到“identity”。详见the HTTP specification
# 4 楼答案
真管用
# 5 楼答案
编码不会改变。为什么