servlet中文乱码问题
通过response对象向页面输出内容时遇到的乱码问题可分为两种情况
1.字节流
字节流输出时可以通过设置响应头"Content-Type"的值为"text/html;charset=UTF-8"来制定浏览器打开页面时用的编码,并在写入时通过相应编码传入字符串的字节数组,如 通过"中文".getBytes("UTF-8")获取中文部分的UTF-8编码的字节数组。
2.字符流
response字符流对象中存在一个缓冲区,用来将字符串转换为指定编码的字节数组,默认情况下response缓冲区的编码默认值是ISO-8859-1,因此如不加以设定,中文内容必定会呈现乱码。可以通过response.setCharacterEncoding("UTF-8")方法来设置缓冲区的编码,再通过response.setHeader("Content-Type", "text/html;charset=UTF-8");将浏览器打开页面的编码设置为与缓冲区编码相同,为了简化书写,java提供了response.setContentType("text/html;charset=UTF-8");方法代替上述两步操作。
通过request对象从请求中读取内容时遇到的乱码问题也可分为两种情况
1.POST方式
POST方式下,存在一个缓冲区,用来将请求体中的内容由字节流通过指定编码解码为字符流,默认情况下缓冲区的默认编码为ISO-8859-1,要解决乱码问题,只需通过request.setCharacterEncoding("utf-8"); 方法将缓冲区编码指定为UTF-8即可。
2.GET方式
由于在GET方式下,需要传递的内容直接存在于请求头的url后,数据的编码一般为UTF-8,而url的默认编码为ISO-8859-1,一般来说有三种方式可以解决中文乱码问题。
(修改配置文件中uri的编码方式)
解决方案一:修改tomcat/conf/server.xml
<Connector port="80" protocol="HTTP/1.1"
connectionTimeout="20000"
redirectPort="8443" URIEncoding="utf-8"/>
(获取乱码内容后通过ISO-8859-1编码表反向查出原始数据,再通过UTF-8码表查出正确内容)
解决方案二:逆向编解码
username = URLEncoder.encode(username, "ISO8859-1");
username = URLDecoder.decode(username, "utf-8");
解决方案三:简写的方式(推荐使用)
username = new String(username.getBytes("ISO-8859-1"),"utf-8");
最新文章
- web全栈开发之网站开发一(Mac环境配置)
- mysql group by后 拼接某一字段
- PTA Insert or Merge
- html 动态显示元素文本
- Hadoop 苦旅(1)——准备以及Cygwin安装
- hdu 4493 Tutor
- UIWindow 详解
- Jmeter 发送json{Jfinal 接口req rsp均为json}
- LANMP一键安装包 版本服务任你选 可安装单一服务
- 201521123092《java程序设计》第四周学习总结
- 【转】C++ STL快速入门
- docker nginx letsencrypt
- php7带来的性能升级
- mybatis之接口方法多参数的三种实现方式
- 8 -- 深入使用Spring -- 4...5 AOP代理:基于注解的“零配置”方式
- Hyperledger Fabric CA User’s Guide——CA用户指南(一)
- Vue图片懒加载插件
- 论文笔记——N2N Learning: Network to Network Compression via Policy Gradient Reinforcement Learning
- ubuntu16.04 tensorflow pip 方式安装
- Android——android weight 属性(百度)
热门文章
- JS函数运行在它们被定义的作用域内,而不是它们被执行的作用域内
- [mark] Linux下如何批量删除空文件
- vmare centos 6.8 minimal 无法上网
- [转] 有java基础的人如何转行做大数据?
- python class metaclass instance
- - >;code vs 1475 m进制转十进制
- Delphi中DBChart的数据库应用
- [转]阿里巴巴数据库连接池 druid配置详解
- [转]C/C++ 程序员必须收藏的资源大全
- vmware备忘