【问题标题】:character encoding in a web page using java使用java在网页中进行字符编码
【发布时间】:2011-02-22 11:43:04
【问题描述】:

如何使用java找出网页中字符编码的类型

【问题讨论】:

    标签: java


    【解决方案1】:

    打开到 URL 的连接(使用 URL.openConnection()),并解析 getContentType() 方法返回的内容类型(应该包含字符集)。如果此标头中不存在,您可能必须解析 HTML 内容并查找诸如

    之类的标记
    <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1" />
    

    【讨论】:

    • 我会将“可能不得不”改为“将不得不”。
    • 您还应该查看 XML 声明,例如 &lt;?xml version="1.0" encoding="ISO-8859-1" ?&gt;。 (如果存在,它应该在文档的开头。)
    【解决方案2】:

    我相信这正是您所需要的。既有代码又有解释。 http://nadeausoftware.com/node/73

    简要总结如下:

    创建一个 WebFile 类,其中:

    1. 构造函数public WebFile( String urlString ) 打开一个URLConnection,读入标头,包括字符编码。如果编码不存在,那么您必须从网页本身读取编码。如果这也不存在,您可以通过Character Encoding Detection Algorithm 试试运气
    2. 方法private Object readStream(int length, java.io.InputStream stream)从流中读取页面数据并使用字符编码返回String,即return new String( bytes, charset ),如果不存在编码或存在编码,则返回通过读取流创建的字节数组编码异常。
    3. 您有页面内容的 getter 和 setter(例如,只调用一次 readStream,返回编码)

    【讨论】:

    • 提供外部资源的链接并不是一个好的答案。该链接可能会失效并变得无用。您应该在回答中至少有一个摘要。
    • @Joachim Sauer:不想重写该页面的完美描述 - 但没有考虑无效链接场景。已修复,谢谢。
    猜你喜欢
    • 1970-01-01
    • 2012-12-05
    • 1970-01-01
    • 1970-01-01
    • 2011-09-21
    • 1970-01-01
    • 2020-07-22
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多