【问题标题】:get Mimetype and encoding charset of text?获取文本的 Mimetype 和编码字符集?
【发布时间】:2012-04-10 07:12:59
【问题描述】:

大家好, 我正在从我的数据库中获取文本,在将文本插入数据库之前,我知道文本的编码是 ISO-8859-1,但是在从数据库中获取之后并在加载此文本之前,我正在通过此代码检查编码

InputStreamReader is = new InputStreamReader(new ByteArrayInputStream(body.getBytes()));
is.getEncoding();   
Log.v("encoding", ""+is.getEncoding());

// String body =  fetched from db 

我在日志中输入文本的编码是 UTF-8。并且此文本未使用此方法加载到 webview 上:

mailView.loadDataWithBaseURL(null, body, "text/html", "UTF-8", null);

请给我一个解决这个问题的正确方法。

【问题讨论】:

  • 参考此链接从字符串java2s.com/Code/Android/UI/…加载webview
  • 感谢帮助,但此链接无法解决我的问题,我的问题是我想获取文本的字符集,当我记录该文本的 contentType 时我得到它(此文本是来自邮件)为“TEXT/HTML; charset="ISO-8859-1"”。但是当我使用问题中给出的代码时,日志显示为 UTF-8。并且 UTF-8 内容必须加载到 webView并且此文本未加载到 webview 上。我的问题是如何在 webview 上加载这些内容??为我提供一种获取文本准确编码信息的方法,如果不是,我该如何将其更改为 UTF-8??

标签: android character-encoding webview mime-types


【解决方案1】:

这个回复太晚了,但是我通过谷歌偶然发现了这个问题,所以我想我会回答的。

如 JavaDoc 中所述,new InputStreamReader(InputStream) 将使用系统默认值(显然是 UTF-8)创建一个阅读器。 is.getEncoding() 只是返回可能与您存储的数据匹配或不匹配的默认值。

一般来说,明确指定流的编码是个好主意。这意味着您需要将编码与内容一起存储。您可以使用带外知识(例如,我的应用程序仅使用 ISO-8859-1),但如果您将来更改您选择的编码,这将很脆弱。

由于世界并不总是一个美好的地方,而且字符串会与它们的字符集分开,因此您可以研究一下字符集检测器。以http://userguide.icu-project.org/conversion/detection 为例。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2018-01-11
    • 2016-08-15
    • 2012-01-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-11-26
    相关资源
    最近更新 更多