Slim3 on GAEやってたらこんなエラーが返ってきた
java.io.CharConversionException: Not an ISO 8859-1 character: 日
うわわわ。なんだこれ・・
丁度メール送信の部分やってたせいで、絶対メールの文字化けとかだろ、とか思ってたんですが、大外れでした。。
犯人
↓↓こういうことすると発生します。↓↓
@Override
public Navigation run() throws Exception {
response.setCharacterEncoding("utf-8");
response.setContentType("application/json");
// ... なんやかんや
response.getOutputStream().println("日本語のメッセージを返したかったんだよー");
}
正しくは・・
public void writeResponseBody(HttpServletResponse response, String body)
throws UnsupportedEncodingException, IOException {
Writer writer = new PrintWriter(new OutputStreamWriter(
response.getOutputStream(), "utf-8"));
writer.write(body);
writer.flush();
writer.close();
}
代わりにこんな子を書いて呼んであげれば良い。
結論
別にSlim3は悪くない・・
悪いのはちゃんとエンコード指定無しにOutputStreamを使う人。。