我遇到了一些奇怪的编码问题。我需要解析来自web的HTML文档,并且我使用'Content- type‘字符集的元数据来确定编码类型。有一个页面给我带来了麻烦,它是由“Shift_jis”(日语)编码的--解析器的结果包含一些乱码。
当我使用UTF-8解析同一文档时,以前乱码的字符可以正确解析,但其他字符现在都是乱码。
我假设文档包含两种不同编码类型的文本。
我可以正确地解析这个文档吗?
另外,我不知道如何,但是所有的浏览器似乎都很好地处理了这个问题,并且很好地呈现了页面。
会非常感谢你对此的任何想法。
我需要解析的页面:http://ao.recruit.co.jp/form.html
发布于 2013-01-17 17:11:05
首先,浏览器看到的是:
莨夂、セ讎りヲ由于CSS text-indent: -9999px和background image laid over it的不同,在呈现的html中显示的内容是不同的。但它就在那里。Removing them will show the text browser is seeing。
开箱即用,使用Shift-Jis进行解码应该会得到莨夂、セ讎りヲ?,但是如果您希望得到与浏览器中相同的结果,则应该使用带有IGNORE的自定义CharsetDecoder
URL url = new URL( "http://ao.recruit.co.jp/form.html");
BufferedInputStream bis = new BufferedInputStream(url.openStream());
CharsetDecoder decoder = Charset.forName("Shift-Jis").newDecoder();
decoder.onMalformedInput(CodingErrorAction.IGNORE);
decoder.onUnmappableCharacter(CodingErrorAction.IGNORE);
Reader inputReader = new InputStreamReader(bis, decoder);
String result = IOUtils.toString(inputReader);
System.out.print(result);这将为您提供与浏览器相同的结果。当然,它不会解析图像文件中的文本。
https://stackoverflow.com/questions/14364430
复制相似问题