0

当我在网络浏览器中显示项目符号、版权符号、商标标志时,它们看起来不错。

// bullets: http://losangeles.craigslist.org/wst/acc/2900906683.html
// bullets: http://losangeles.craigslist.org/lac/acc/2902059059.html
// bullets: http://indianapolis.craigslist.org/acc/2867115357.html
// bullets: http://indianapolis.craigslist.org/ofc/2885697780.html
// bullets: http://indianapolis.craigslist.org/ofc/2887554512.html
// copyright: http://chicago.craigslist.org/nwc/acc/2854640931.html

但是当我使用 Android WebView 时,我得到“三角形内的问号”:

web.loadDataWithBaseURL(null, myHtml, null, "UTF-8", null);

我应该使用不同的编码吗?

我是否应该自己搜索/替换某些字符... 1×1?

4

2 回答 2

2

尝试使用 WebView 设置

myWebView = (WebView)findViewById(R.id.mywebView);
WebSettings settings = myWebView.getSettings();
settings.setDefaultTextEncodingName("UTF-8");
于 2012-03-09T20:46:38.633 回答
1

我以前遇到过这个问题。在将其加载到 WebView 之前,我会确保您的 myHtml 字符串已经具有良好的编码。您可以通过使用 Log.d() 记录它来检查它。如果该字符串中的编码错误,则它也不会在 WebView 中正确显示。你会在 LogCat 中看到那些奇怪的字符。

如果是这种情况,您需要确保在将数据读入 myHtml 字符串时,使用 InputStreamReader 之类的东西并将其作为字符编码传递给“UTF-8”。

我会更改您正在使用的代码行:

BufferedReader buffer = new BufferedReader(new InputStreamReader(content), 1000);

至:

BufferedReader buffer = new BufferedReader(new InputStreamReader(content, "UTF-8"), 1000);

此版本的构造函数记录到:

在 InputStream in 上构造一个新的 InputStreamReader。用于将字节解码为字符的字符转换器由 enc 的名称标识。如果找不到编码,则会引发 UnsupportedEncodingException 错误。

http://developer.android.com/reference/java/io/InputStreamReader.html并查看第二个。

编辑:如果这不起作用,您可以尝试使用:

String s = EntityUtils.toString(entity, HTTP.UTF_8);

这是来自Android Java UTF-8 HttpClient 问题

于 2012-03-10T08:27:30.653 回答