tac*_*cos 3 android character-encoding android-webview
我使用以下Java代码创建一些用于显示内容的HTML.
public String htmlFromArrayList(ArrayList<TSI> a) {
StringBuilder returnStringBuilder = new StringBuilder();
for (TSI i : a) {
returnStringBuilder.append("<h3>");
returnStringBuilder.append(i.itemTitle);
returnStringBuilder.append("</h3><p>");
returnStringBuilder.append(i.itemText);
returnStringBuilder.append("</p>");
}
return returnStringBuilder.toString();
}
Run Code Online (Sandbox Code Playgroud)
加载我使用的字符串
mWebView.loadData(htmlFromArrayList(mSummaryItemArrayList), "text/html", null);
Run Code Online (Sandbox Code Playgroud)
现在这适用于我的约60%到70%ArrayList<TSI>,但对于其他人,当我打开时,我得到一个错误TSI:
The web page at data:text/html;null,%3Cp%E.......p%3E might be temporarily down or it may have moved...
我假设这与charset中的奇怪字符有关.错误消息是什么意思?
您是否在i.itemText或i.itemTitle中有百分号,反斜杠或其他非字母字符等奇怪的字符?如果这样做,那将导致"找不到网页"问题.
http://code.google.com/p/android/issues/detail?id=4401
此外,您没有传入编码,尝试传入"UTF-8"而不是null.
mWebView.loadData(htmlFromArrayList(mSummaryItemArrayList), "text/html", "utf-8");
Run Code Online (Sandbox Code Playgroud)
通过用HTML实体(Ampersand Pound 37)替换所有%符号可以解决这个问题:(%).
有报告称,如果任何中文字符被输入您的webView,即使您处理百分号,您仍然可以获得"找不到页面"的问题.因此,解决方法是尝试这样做:
这适用于所有内容和中文字符:
mWebView.loadData(URLEncoder.encode(html,"utf-8").replaceAll("\\+"," "), "text/html", "utf-8");
Run Code Online (Sandbox Code Playgroud)
来源 http://code.google.com/p/android-rss/issues/detail?id=15
| 归档时间: |
|
| 查看次数: |
3091 次 |
| 最近记录: |