2011年10月27日木曜日

WebView#loadDataが文字化けする(Android3.0以降)

Android2.3以前であれば、METAタグにContent-Typeを指定することで解決した。
webView.loadData(
    "<html>"
      + "<head>"
      + "<meta http-quiv=\"Content-Type\" content=\"text/html charset=utf-8\" />"
      + "</head>"
      + "<body>"
      + htmlBodyData
      + "</body>"
      + "</html>",
    "text/html",
    "utf-8");

しかし、Android3.0以降では上記の対処でも文字化けした。
いろいろ調べた結果、WebView#loadDataWithBaseURLを使用することで、とりあえず文字化けを回避できた。
webView.loadDataWithBaseURL(
    null,
    "<html>"
      + "<head>"
      + "<meta http-quiv=\"Content-Type\" content=\"text/html charset=utf-8\" />"
      + "</head>"
      + "<body>"
      + htmlBodyData
      + "</body>"
      + "</html>",
    "text/html",
    "utf-8",
    null);

ソースを軽く眺めると、loadDataとloadDataWithBaseURLでは最初のデータの入れ方からして違っていたので、loadDataがメンテされてないんだろうな…。

0 件のコメント: