注意语句顺序 防止Servlet Request Response乱码
2010-09-18 13:32
253 查看
servlet乱码一般分为Request发生乱码和Response发生乱码
对于Request发生乱码一般是由于tomcat容器的默认编码是ISO-8859-1
而Java中的编码是UTF-8的,因此可以对
String myparam=request.getParameter("myparam");
得到的参数进行编码转化
myparam = new String(myparam.getBytes("ISO-8859-1"),"UTF-8");
对于Response发生乱码是由于页面不知道发送来的数据的编码格式
一般可以使用:
response.setCharacterEncoding("utf8");
注意这一句一定要在
PrintWriter out=response.getWriter();
获得输出对象之前,否则编码的设置将不能对输出流生效,也就发生乱码了
网上有很多解决乱码的文章和方法.但很少有提到要注意这个语句顺序的
这是实验验证的结论,而且从逻辑上也是说的通的.
写作则能避免乱码:
response.setCharacterEncoding("utf8");
PrintWriter out=response.getWriter();
写作
PrintWriter out=response.getWriter();
response.setCharacterEncoding("utf8");
则是无效的设置,不能解决乱码.
一个消除乱码的demo代码:
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
// TODO Auto-generated method stub
String myparam=request.getParameter("myparam");
myparam = new String(myparam.getBytes("ISO-8859-1"),"UTF-8");
response.setCharacterEncoding("utf8");
response.setContentType("text/html");
PrintWriter out=response.getWriter();
out.write("汉字");
}
对于Request发生乱码一般是由于tomcat容器的默认编码是ISO-8859-1
而Java中的编码是UTF-8的,因此可以对
String myparam=request.getParameter("myparam");
得到的参数进行编码转化
myparam = new String(myparam.getBytes("ISO-8859-1"),"UTF-8");
对于Response发生乱码是由于页面不知道发送来的数据的编码格式
一般可以使用:
response.setCharacterEncoding("utf8");
注意这一句一定要在
PrintWriter out=response.getWriter();
获得输出对象之前,否则编码的设置将不能对输出流生效,也就发生乱码了
网上有很多解决乱码的文章和方法.但很少有提到要注意这个语句顺序的
这是实验验证的结论,而且从逻辑上也是说的通的.
写作则能避免乱码:
response.setCharacterEncoding("utf8");
PrintWriter out=response.getWriter();
写作
PrintWriter out=response.getWriter();
response.setCharacterEncoding("utf8");
则是无效的设置,不能解决乱码.
一个消除乱码的demo代码:
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
// TODO Auto-generated method stub
String myparam=request.getParameter("myparam");
myparam = new String(myparam.getBytes("ISO-8859-1"),"UTF-8");
response.setCharacterEncoding("utf8");
response.setContentType("text/html");
PrintWriter out=response.getWriter();
out.write("汉字");
}
相关文章推荐
- 注意语句顺序 防止Servlet Request Response乱码
- 注意语句顺序 防止Servlet Request Response乱码
- 注意语句顺序 防止Servlet Request Response乱码
- 注意语句顺序 防止Servlet Request Response乱码
- 使用程序内购买(IAP)的应用程序在提交时的注意事项,防止审核被拒
- 关于平方和立方和,注意范围的取值顺序
- SQL操作语句中的注意点
- SQL语句优化注意事项
- Select 语句执行顺序以及如何提高Oracle 基本查询效率
- for循环语句头的执行顺序
- Delphi拼装SQL语句应该注意的地方
- VHDL并行语句于顺序语句的理解
- Hql语句注意事项总结
- web.xml加载顺序及Spring包扫描注意
- 关于sql语句先后顺序问题
- switch语句使用时注意事项
- Solr、lucene查询语句作或查询时的注意点
- 化简复杂逻辑,编写紧凑的if条件语句(三):确定最简的if子句顺序
- SQL语句的执行顺序
- 时间类型数据使用between ...and ..语句条件查询时应注意的问题