gpt4 book ai didi

android - WebView 中的字符集 (Android)

转载 作者:行者123 更新时间:2023-11-29 14:42:00 24 4
gpt4 key购买 nike

我正在尝试使用 loadData() 方法在 WebView 中显示来自 Java String 的一些数据:

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:信息/文本(606):â:8217

我认为这是一个字符集问题,但我不太确定如何解决它。

这是 HTML 的 fragment (我不确定我的雇主是否允许完整发布内容):

突尼斯总理

导致问题的是 ’ 字符。注意:我显示的不是完整格式的 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”,所有其他值将导致数据参数被视为 URL 编码的 ASCII。

因此,您不能使用编码参数设置字符串的编码,您必须在 mime 类型中指定编码。

关于android - WebView 中的字符集 (Android),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6152789/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com