注意语句顺序 防止Servlet Request Response乱码
2017-04-29 08:20
239 查看
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("汉字");
}
相关文章推荐
- 注意语句顺序 防止Servlet Request Response乱码
- 注意语句顺序 防止Servlet Request Response乱码
- 注意语句顺序 防止Servlet Request Response乱码
- 注意语句顺序 防止Servlet Request Response乱码
- 03-03 java 顺序语句结构,选择结构if语句
- 在Android 项目时的防止Memory leak 要注意的事项
- hdoj1003注意在寻找最优解对应的时候寻找的顺序
- C#的try-catch-finally 中的catch语句的异常有顺序的区别
- 查询语句中select from where group by having order by的执行顺序
- SQL语句执行顺序
- [慢查优化]建索引时注意字段选择性 & 范围查询注意组合索引的字段顺序
- 在Mybatis中关于xml中sql语句的一些注意事项,再补充
- SQL语句操作优先级顺序
- ACCESS中使用SQL语句应注意的地方及几点技巧
- select语句返回结果的顺序问题
- 使用 OleDbParameter 变量 时要注意参数和参数数组,及数组赋值时的顺序
- 关于C++语句的几点注意事项
- MySQL的语句执行顺序
- SQL语句编写注意问题
- [导入]实现SQL语句中,按照in 中的顺序排序的方法