2009-11-09

GAE/J、URL フェッチで文字化け「????」

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");
    ...
}
みたいなのもいるらしいけれど、うちでは今のところ関係なし。文字コードの自動取得コードも書いてみたいけれど…、それはまた別の機会に。

参考:

No comments:

Post a Comment