关于中文乱码问题(总结)
最近在学习web开发,遇到一个比较棘手的问题,就是web比较烦人的中文乱码问题。
遇到此类问题,
我们也不必担心。想想其中的原理,就可以排除很多问题。
先确定是那个环节的charset的问题。
一 从客户端到服务器的问题
一般从客户端到服务器端的问题主要用户处理与页面交互时产生的乱码问题,例如提交表单等。具体验证你可以打印一些语句出来看看。单独做一个小实验。
1.解决表单的 get 方式:
在这里我们利用Tomcat来举例子:
在server.xml中添加一项 useBodyEncodingForURI="true"
server.xml:
<Connector port="8080" protocol="HTTP/1.1"
connectionTimeout="20000"
redirectPort="8443" useBodyEncodingForURI="true" />
2.解决表单的post问题:
在未取得参数之前要设定
request.setCharacterEncoding("GBK");
这样我们就解决了客户端到服务器端 的问题了。
如果这个环节没有出现任何问题的话,那就是服务收到的数据往数据库存储的时候出现了问题,可能就是数据库本身的编码问题设置
二 服务器到数据库存储出现的问题
这时我们可以设置数据库的编码形式就行了。
这里我想要跟大家说的,还有演示的就是一种常见的解决方法,那就是利用filter来解决中文乱码问题。
1.我们创建一个filter
EncodingFilter.class:
package com.softrc.filter;
import java.io.IOException;
import javax.servlet.Filter;
import javax.servlet.FilterChain;
import javax.servlet.FilterConfig;
import javax.servlet.ServletException;
import javax.servlet.ServletRequest;
import javax.servlet.ServletResponse;
public class EncodingFilter implements Filter{
private String code;
public void destroy() {
}
public void doFilter(ServletRequest request, ServletResponse response,
FilterChain chain) throws IOException, ServletException {
request.setCharacterEncoding(code);
chain.doFilter(request, response);
}
public void init(FilterConfig filterConfig) throws ServletException {
code = filterConfig.getInitParameter("code");
}
}
相应在项目中的web.xml中配置下面的信息,切忌要放在前面,因为过滤器是有顺序的
web.xml:
<filter>
<filter-name>encoding</filter-name>
<filter-class>com.softrc.filter.EncodingFilter</filter-class>
<init-param>
<param-name>code</param-name>
<param-value>GBK</param-value>
</init-param>
</filter>
<filter-mapping>
<filter-name>encoding</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
转载于:https://www.cnblogs.com/dyllove98/p/3243793.html
关于中文乱码问题(总结)相关推荐
- SpringSecurity安全验证中文乱码问题
使用SpringSecurity做安全验证时发现form表单中提交中文名会出现乱码问题. 原因是因为我在web.xml配置文件中将springSecurityFilterChain拦截器放在了 cha ...
- httpclient工具类,post请求发送json字符串参数,中文乱码处理
在使用httpclient发送post请求的时候,接收端中文乱码问题解决. 正文: 我们都知道,一般情况下使用post请求是不会出现中文乱码的.可是在使用httpclient发送post请求报文含中文 ...
- 关于HttpClient上传中文乱码的解决办法
使用过HttpClient的人都知道可以通过addTextBody方法来添加要上传的文本信息,但是,如果要上传中文的话,或还有中文名称的文件会出现乱码的问题,解决办法其实很简单: 第一步:设置Mult ...
- Servlet、MySQL中文乱码
1.Servlet中文乱码: 在doPost或doGet方法里,加上以下两行即可: response.setContentType("text/html;charset=UTF-8" ...
- android java 中文乱码_android读写中文如何避免乱码详解
前言 android读取文件中文出现乱码的原因无非就是,读取文件的字符格式与写如文件的格式不一致.因此,避免中文乱码,要在写入文件的时候按照一定的格式写入,读取的时候按照一定的格式读取.这样对应就不会 ...
- java servlet 参数乱码_JSPServlet处理参数中的中文乱码总结
从form表单提交信息到一个JSP页面或者一个Servlet进行处理的时候,提交的中文信息若不加处理的话就会显示乱码,如一串???.现在通过一个例子来进行总结如下: 写一个用户信息提交页面,通过这个页 ...
- php pdo 中文乱码,php pdo oracle中文乱码的快速解决方法
在/etc/profile.d/简历oracle.sh 内容如下在NLS_LANG设置编码ORACLE_HOME=/usr/lib/oracle/12.1/client64 C_INCLUDE_PAT ...
- sqlserver mysql 乱码_SQLServer数据库如何解决中文乱码问题?方法有哪些?
很多使用数据库的人都知道,在安装SQLServer数据库是,如果设置不当就会出现一些中文乱码.主要原因是,很多人在使用默认安装系统时,一般不会考虑到默认排序的规则是拉丁文的排序规则,只是点击下一步,在 ...
- JAVA中文注解驱动,解决api接口返回的json里面出现中文乱码的问题
在src/main/resources/springmvc-servlet.xml中加入 <!-- 中文注解驱动 --> <mvc:annotation-driven>< ...
- U盘挂载,gedit,vi,文本模式中文乱码等等问题
U盘或硬盘挂载 首先,我们要查看一下磁盘的分区信息sudo fdisk -l (注意注意,是小写的L,不是1,也不是i) 这里可以看到我的硬盘情况,前面几个是win7系统下的C,D ,E ,F 盘 ...
最新文章
- mysqld服务启动失败, Failed to restart mysqld.service: Unit not found.
- python(7)– 类的反射
- rest-framework框架的基本组件
- mysql基本常用命令_mysql 的基本操作以及常用命令
- 3t硬盘 xp_解决方案:如何在Windows XP SP3 32位系统下识别3T容​​量GPT格式的硬盘...
- 《Java从入门到放弃》JavaSE入门篇:多线程(入门版)
- python将数据写入txt文本文件
- 怎么把度分秒化成小数_excel中批量将经纬度度分秒转换成十进制小数点的方法介绍...
- MFC基于对话框使用dll进行多语言切换
- Date对象之获取和设置月份getMonthsetMonth
- 绿城濮园中国居业理想水镇发布;保乐力加中国开启产品鉴别双通道 | 美通企业日报...
- 潜望丨蔚来发布了喜忧参半的财报 与特斯拉的较量刚刚开始
- android 多个蓝牙连接电脑,Android BLE蓝牙多设备连接
- 基于LINUX下ESP_IDF开发环境搭建安装问题总结
- 不再发烧,小米 11 推送降温补丁
- python位置参数错误_python-2.7 – python:组合位置和可选参数时argparse抛出值错误...
- c语言file和fp未声明标识符,c语言定义文件指针时(FILE *fp)一定要写*fp吗、可以换成别的字母不...
- 重采样方法 (Resampling Methods) (CV, Bootstrap)
- Win10桌面右键资源管理器崩溃重启的解决办法
- IBM Watson机器人原理介绍