Google App Engine for Java 最初のつまずき。URL フェッチで日本語が「?????」と盛大に文字化け。
Google の Low Level API だと、文字エンコードの設定も自動でしてくれるよ、とのことだったのでその
まま信用していたけれど、やっぱり設定はいるようで。
public static String getSiteText(String url, String charset) throws IOException {
return new String(URLFetchServiceFactory.getURLFetchService().fetch(new URL(url)).getContent(), charset);
}
としておくと、とりあえずいい感じ。もちろん、
public void doGet(HttpServletRequest req, HttpServletResponse resp) throws IOException {
resp.setContentType("text/html; charset=UTF-8");
...
}
としとかないと、それはそれで文字化けするので注意。あ、あとパラメータ処理のために
public void doPost(HttpServletRequest req, HttpServletResponse resp) throws IOException {
req.setCharacterEncoding("UTF-8");
...
}
みたいなのもいるらしいけれど、うちでは今のところ関係なし。文字コードの自動取得コードも書いてみたいけれど…、それはまた別の機会に。
参考: