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");
servlet中文乱码问题的更多相关文章
- jsp+servlet中文乱码问题
jsp+servlet中文乱码问题 servlet想要获得前台传来的值 String strName=new String(request.getParameter("name") ...
- Servlet 中文乱码问题解析及详细解决方法
使用 servlet 向客户端浏览器回送中文时,经常出现中文乱码的问题,这里给大家完完全全地搞明白: 一.基本常识 中文系统默认是 GBK 编码(GBK是对GB2312的补充,包含它) 需要处理编码问 ...
- jsp和servlet中文乱码
jsp和servlet之间出现中文乱码的集中原因和解决方法详解:http://blog.csdn.net/longyuhome/article/details/7856270
- [转]Servlet 中文乱码问题及解决方案剖析
原文地址:http://blog.csdn.net/xiazdong/article/details/7217022/ 一.常识了解 1.GBK包含GB2312,即如果通过GB2312编码后可以通过G ...
- Servlet 中文乱码问题及解决方案剖析
转自:http://blog.csdn.net/xiazdong/article/details/7217022/ 一.常识了解 1.GBK包含GB2312,即如果通过GB2312编码后可以通过GBK ...
- Servlet中文乱码问题解决办法
首先对于源jsp网站和servlet里面的字符集要一样,一般支持中文的字符集为UTF-8最好采用这个字符集(除此之外还有gb2312); 对于源jsp文件的代码中需要设置 设置你的page里面的字符集 ...
- jsp中文乱码 Servlet中文乱码 utf-8
JSP+Servlet项目中,项目统一使用utf-8编码.配置过滤器过滤所以请求并设置utf-8编码,jsp页面也都设置utf-8,但是还有一点很容易忽视的就是tomcat也要设置utf-8,默认情况 ...
- Servlet中文乱码解决方法
程序中的输入输出都是以流的形式保存的,流中保存的实际上全都是字节文件. 字节流和字符流的区别: 在Java.io包中操作文件内容的主要有两大类:字节流.字符流,两类都分为输入和输出操作. 在字节流中输 ...
- Servlet中文乱码原因 解决 Get 和 Post 和客户端
一.Get方式的中文乱码 1) 使用如下页面表单内容: <form action="http://127.0.0.1:8080/day07/params" method=&q ...
随机推荐
- JS客户端RSA加密,Java服务端解密
常用语网页客户端对密码加密,在后端java解密还原 java代码依赖 <dependency> <groupId>commons-codec</group ...
- 高性能MySQL(四):schema陷阱
一.schema陷阱 二.缓存表和汇总表 三.范式和反范式
- websocket与socket.io
什么是Websocket? Websocket是一个独立于http的实时通信协议,最初是在HTML5中被引用进来的,在HTML5规范中作为浏览器与服务器的核心通信技术被嵌入到浏览器中.WebSocke ...
- React学习笔记-7-销毁阶段
销毁阶段可以使用的函数:componentWillUnmount:在删除组件之前进行清理操作,比如计时器和事件监听器.因为这些函数都是开发者手动加上去的,react不知道,必须进行手动清理. 实例第一 ...
- vmware备忘
- Android 自定义ToolBar详细使用
自定义xml设置ToolBar,通过menu文件扩展选项,通过继承baseactivity使用 1.ToolBar布局 <?xml version="1.0" encodin ...
- ***Linux下使用git命令及github项目
在linux下搭建git环境1.创建Github账号,https://github.com2.Linux创建SSH密钥: ssh-keygen ##一直默认就可以了 3.将公钥加入到Github账户 ...
- 阿里云服务器上开启linux远程桌面连接
一.说明: 本文的目的是实现在windows机器上利用远程桌面连接来访问远程的linux桌面. 这里使用的是阿里云服务器,操作系统为Centos6.5. 二.基本步骤: 1.首先保证服务器已经安装完毕 ...
- Oracle连接与会话
连接(connection):连接是从客户端到oracle数据库实例的一条物理路径. 会话(session):会话是数据库实例中存在的一个逻辑实体. case1:一个连接可以有多个会话 SQL> ...
- [转]DDD领域驱动设计基本理论知识总结
领域驱动设计之领域模型 加一个导航,关于如何设计聚合的详细思考,见这篇文章. 2004年Eric Evans 发表Domain-Driven Design –Tackling Complexity i ...