我从SQlite数据库中获取HTML编码内容,我想在WebView中显示。我目前正在使用:
public class ShowAbstracts extends Activity {
public void onCreate(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
Bundle extras = getIntent().getExtras();
if (extras != null) {
String body = extras.getString(DatabaseHelper.KEY_BODY);
WebView webview = new WebView(this);
setContentView(webview);
String summary = "<html><body> "+body+" </body></html>";
webview.loadData(summary, "text/html", "iso-8859-1");
}
}
}
它的工作原理是它打开一个WebView并显示内容但我得到了奇怪的字符,对于某些内容它只是崩溃了。数据库采用ISO-8859-1编码。 有没有办法处理我的数据库内容中的特殊字符并正确显示它们?
非常感谢!
Rik
答案 0 :(得分:5)
成功!
解决这个问题是三件事的组合:
public class ShowAbstracts extends Activity {
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
Bundle extras = getIntent().getExtras();
if (extras != null) {
String body = extras.getString(DatabaseHelper.KEY_BODY);
WebView webview = new WebView(this);
setContentView(webview);
String summary = "<?xml version='1.0' encoding='utf-8'?><html><body>"+body+" </body></html>";
String uri = Uri.encode(summary);
webview.loadData(uri, "text/html", "utf-8");
}
}
}
答案 1 :(得分:0)
WebView的api(http://developer.android.com/reference/android/webkit/WebView.html)说数据参数必须是URI转义的(http://developer.android.com/参考/ JAVA /净/ URLEncoder.html)。
此外,当您有一个字符串时,编码已经完成。你必须看到字符串是使用正确的编码创建的(对于Android,默认值是UTF-8)。