LoginSignup
5
4

More than 5 years have passed since last update.

Slim3でjava.io.CharConversionException: Not an ISO 8859-1 character:が出てきた時

Posted at

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を使う人。。

5
4
2

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
5
4