Android WebView无法显示版权或商标符号?

时间:2012-03-08 17:31:58

标签: android encoding character-encoding webview html-escape-characters

当我在网络浏览器中显示子弹点,版权符号,商标标志时 看起来很好。

// 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-by-1?

2 个答案:

答案 0 :(得分:2)

尝试使用WebView设置

myWebView = (WebView)findViewById(R.id.mywebView);
WebSettings settings = myWebView.getSettings();
settings.setDefaultTextEncodingName("UTF-8");

答案 1 :(得分:1)

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

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

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

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

为:

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

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

  

在InputStream中构造一个新的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 Problem