servlet中文一般乱码问题结解决方式总结
2015-08-31 21:01
351 查看
出现中文乱码的问题有很多,以前在学习php的时候乱码的问题近乎没有多少,php在这方面还是处理的比较好的,但在javaee的servlet中中文乱码的问题比较好,而出现的原因也比较多,下面做一下简单的总结:
按照数据传送的方式我分为了两类:POST和GET传送数据,当然了还有其它的传输方式,但是这两种是我们最常见的。
1:以POST传送数据的方式:
这种方式相对于get传送的处理要简单一些,首先在浏览器端如用户填写的表单以post的方式传送到servlet,这是的数据只要经过utf-8转码就可以时间正确的编码:
request.setCharacterEncoding("utf-8");就可以在服务器端获取到正确的码。
2:这种方式较为麻烦一点,以get传送数据的话会把数据编码会转换为iso-8859-1编码,所以在servlet接收到数据之后,需要转换成正确的编码,可以使用类似:
String newusername=new String(username.getBytes("iso-8859-1"),"utf-8");的方式转换编码。
3:上面的两种方式的编码确实是正确了,但也只是在服务器端是正确的,因为服务器的数据如果返回给浏览器,还是需要再次进行转码的。这个相对简单一一些:
response.setContentType("text/html;charset=utf-8"); 但是需要注意的是:get和post方法都要去设置返回数据的编码方式,否则单方面还是不可行的。
建议一下:最好把复杂的整理乱码方案封装成为工具类,减少代码量。
按照数据传送的方式我分为了两类:POST和GET传送数据,当然了还有其它的传输方式,但是这两种是我们最常见的。
1:以POST传送数据的方式:
这种方式相对于get传送的处理要简单一些,首先在浏览器端如用户填写的表单以post的方式传送到servlet,这是的数据只要经过utf-8转码就可以时间正确的编码:
request.setCharacterEncoding("utf-8");就可以在服务器端获取到正确的码。
2:这种方式较为麻烦一点,以get传送数据的话会把数据编码会转换为iso-8859-1编码,所以在servlet接收到数据之后,需要转换成正确的编码,可以使用类似:
String newusername=new String(username.getBytes("iso-8859-1"),"utf-8");的方式转换编码。
3:上面的两种方式的编码确实是正确了,但也只是在服务器端是正确的,因为服务器的数据如果返回给浏览器,还是需要再次进行转码的。这个相对简单一一些:
response.setContentType("text/html;charset=utf-8"); 但是需要注意的是:get和post方法都要去设置返回数据的编码方式,否则单方面还是不可行的。
建议一下:最好把复杂的整理乱码方案封装成为工具类,减少代码量。
相关文章推荐
- 自定义Notification 聊天界面的编写
- FckEditor配置手册中文教程详细说明
- Unity 静态构造函数特殊使用
- RAII
- Java内存分析
- testlink的安装
- Android - 卡片式布局 Fragment 详细回顾(一)
- 全解排序算法
- 【C++基础学习】数据封装、构造函数
- GUI
- C语言基础 (练习)
- IOS关于UITabBarController的使用
- hdu4300 Clairewd’s message(扩展KMP)
- Codeforces 474D Flowers
- 2015第36周一高效程序员的45个习惯
- 语料库
- Linux生产常用命令 --持续更新中
- Ubuntu下解决"firefox profile cannot be loaded it may be missing or inaccessible"
- test
- C++中cin,cout,以及返回值