获取Mimetype和编码文本的字符集?

时间:2012-04-10 07:13:00

标签: android character-encoding webview mime-types

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

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);

请建议我解决此问题的正确方法。

1 个答案:

答案 0 :(得分:0)

这个回复非常晚,但我偶然发现谷歌的问题,所以我想回答。

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

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

由于世界并不总是一个好地方,并且字符串与它们的字符串分开,你可能会看到一个字符集检测器。请参阅http://userguide.icu-project.org/conversion/detection作为示例。