首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在单个文件中处理多个编码

在单个文件中处理多个编码
EN

Stack Overflow用户
提问于 2013-01-17 01:41:25
回答 1查看 148关注 0票数 1

我遇到了一些奇怪的编码问题。我需要解析来自web的HTML文档,并且我使用'Content- type‘字符集的元数据来确定编码类型。有一个页面给我带来了麻烦,它是由“Shift_jis”(日语)编码的--解析器的结果包含一些乱码。

当我使用UTF-8解析同一文档时,以前乱码的字符可以正确解析,但其他字符现在都是乱码。

我假设文档包含两种不同编码类型的文本。

我可以正确地解析这个文档吗?

另外,我不知道如何,但是所有的浏览器似乎都很好地处理了这个问题,并且很好地呈现了页面。

会非常感谢你对此的任何想法。

我需要解析的页面:http://ao.recruit.co.jp/form.html

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2013-01-17 17:11:05

首先,浏览器看到的是:

代码语言:javascript
复制
莨夂、セ讎りヲ

由于CSS text-indent: -9999pxbackground image laid over it的不同,在呈现的html中显示的内容是不同的。但它就在那里。Removing them will show the text browser is seeing

开箱即用,使用Shift-Jis进行解码应该会得到莨夂、セ讎りヲ?,但是如果您希望得到与浏览器中相同的结果,则应该使用带有IGNORE的自定义CharsetDecoder

代码语言:javascript
复制
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);

这将为您提供与浏览器相同的结果。当然,它不会解析图像文件中的文本。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/14364430

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档