解決Error java.io.CharConversionException: Not an ISO 8859-1
最近的網誌都是在解決錯誤訊息,有點像擦屁股大隊長了
這次要排除的是 java.io.CharConversionException: Not an ISO 8859-1 這個問題
在servlet output stream,時發生的,會出現以下錯誤訊息
description The server encountered an internal error () that prevented it from fulfilling this request. exception java.io.CharConversionException: Not an ISO 8859-1 character: 中 javax.servlet.ServletOutputStream.print(ServletOutputStream.java:89) javax.servlet.ServletOutputStream.println(ServletOutputStream.java:242) mypack.HelloWorldExample1.doGet(HelloWorldExample1.java:43) javax.servlet.http.HttpServlet.service(HttpServlet.java:690) javax.servlet.http.HttpServlet.service(HttpServlet.java:803) filters.SetCharacterEncodingFilter.doFilter(SetCharacterEncodingFilter.java:122) org.netbeans.modules.web.monitor.server.MonitorFilter.doFilter(MonitorFilter.java:196)
上網查了一下才知,原本寫法是直接使用output stream ,就像
ServletOutputStream out = res.getOutputStream();
res.println(line);
res.println(line);
怎麼轉碼都不行(但在Tomcat 4時是OK的,Tomcat 6之後就都會出錯),但如果改用OutputStreamWriter ,先定義好寫出的編碼就可以正常了,使用方式如下:ServletOutputStream stream= res.getOutputStream();
OutputStreamWriter out = new OutputStreamWriter(stream,"UTF-8");
out.write(line);
out.write(line);
但要注意,這個物件沒有println可用,所以如要斷行符號可要自己加上去喔!
參考資源: http://www.taixinglife.com/blog-138-89.html
近期留言