2011年10月27日木曜日

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

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

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

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

0 件のコメント: