在WebViewAndroid中设置字符

问题描述

| 我正在尝试使用loadData()方法在WebView中显示Java字符串中的一些数据:
wv.loadData(myString,\"text/html,\"utf-8\");
我遇到的问题是WebView会破坏非ASCII(我假设吗?)字符的输出。如果我使用TextView而不是WebView,则不会发生此问题,并且文本可以正确显示(尽管涉及一些HTML标记,因此最终不希望使用TextView)。 如果有帮助,当我运行以下代码时:
for(int i = 0; i < myString.length() && i < 400; i++)
      Log.i(\"Text\",myString.charAt(i) + \": \" + (int) myString.charAt(i));
冒犯性的字符将在日志中显示为: 05-27 13:15:45.110:INFO / Text(606):â:8217 我认为这是一个字符集问题,但是我不太确定如何解决它。 这是HTML的摘要(我不确定我的雇主是否允许内容的完整发布): 突尼斯总理 造成问题的是“字符”。注意:我要显示的不是完整的HTML页面。如果有问题,则只是带有HTML标记的文本。     

解决方法

        我有一个类似的问题,我传递给loadData()方法的字符串未在WebView中正确显示(使用奇数字符而不是正确的DBCS字符)。在我的情况下,字符串已以UTF-8正确编码,问题出在loadData()如何使用字符串上。 我发现这对于在mime类型参数中指定字符集(而不是在编码参数中)很重要。具体来说,通话必须是
wv.loadData(myString,\"text/html; charset=utf-8\",encoding);
就我而言,我将null用作编码变量,它可以正常工作(Android 4.2.1)。阅读关于loadData()的API文档;它似乎表明它将接受\“ base64 \”,而所有其他值将导致data参数被视为URL编码的ASCII。 因此,您不能使用encoding参数设置字符串的编码,必须在mime类型中指定编码。     ,        尝试:
wv.loadData(URLEncoder.encode(myString).replace(\"+\",\"%20\"),\"text/html,\"utf-8\");
或者,如果这样不起作用:
wv.loadData(myString,\"ISO-8859-1\");
或两者结合。其中之一通常对我有用。     

相关问答

依赖报错 idea导入项目后依赖报错,解决方案:https://blog....
错误1:代码生成器依赖和mybatis依赖冲突 启动项目时报错如下...
错误1:gradle项目控制台输出为乱码 # 解决方案:https://bl...
错误还原:在查询的过程中,传入的workType为0时,该条件不起...
报错如下,gcc版本太低 ^ server.c:5346:31: 错误:‘struct...