SpringMVC开发过程中的中文乱码问题
相信大家在开发初期遇到中文乱码问题一定是一头雾水,不是数据库乱码了就是页面乱码了或者传值时乱码。其实解决乱码的途径很简单,就是统一编码与解码的类型,我把自己遇到的乱码问题整理出来,希望能够对大家有用。
首先需要对ide下的编码做统一,我使用的是idea,在页面下面如图所示都有文件编码类型,选择utf-8:
配置完后,需要对idea的全局编码也进行配置,在idea的配置中进行设置,Preferences中输入encoding,然后进行如下配置
配置完后,如果是jsp页面,那么也需要在jsp页面中统一添加如下代码:
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
配置完上述配置后,一般出现乱码情况也只有我们在传递数据的时候编码与解码方法不一致,我遇到的有下面两种,数据库与页面间传值。
数据库中文乱码意思是本来在我们页面中的中文是显示正确的,但是存入数据库时,要么写入sql时出现了乱码,要么存入了数据库后变成了乱码。有以下几点需要注意:
1.在连接数据库时,在jdbc_url中添加useUnicode=true&characterEncoding=utf8,这样做指定了字符的编码与解码的格式。
jdbc:mysql://localhost:3307/dbbasename?useUnicode=true&characterEncoding=utf8
在需要向数据库存入数据时,会先用UTF-8格式将数据解码成字节码,然后再将解码后的字节码重新使用GBK编码存放到数据库中。
在取数据时,数据库会先将数据库中的数据按GBK格式解码成字节码,然后再将解码后的字节码重新按UTF-8格式编码数据,返回给客户端。
数据库也需要进行相应的设置,我们通过以下语句来查看我们数据库的编码方式:
show variables like "%char%";
一般是需要结果如下图所示:
如果不对,可以使用set names utf8
语句来配置。
在配置完数据库的编码格式后,我们在创建数据库与数据表的时候最好也统一一下格式,加入如下图的语句:
到这里数据库就配置完成,一般情况下不会再出现中文乱码情况。
下面说下页面间传值,在前台的表单数据,传输到后台是,利用request.getParameter()语句取值时,发现中文乱码,此时有两种情况,一种是post提交方式,可以采用spring的字符编码过滤器,在
web.xml中添加以下配置:
<!-- 配置Spring字符编码过滤器 -->
<filter>
<filter-name>CharacterEncodingFilter</filter-name>
<filter-class>org.springframework.web.filter.CharacterEncodingFilter</filter-class>
<init-param>
<param-name>encoding</param-name>
<param-value>utf-8</param-value>
</init-param>
</filter>
<filter-mapping>
<filter-name>CharacterEncodingFilter</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
还有一种是get方式出现中文乱码,此时上种配置spring字符集的方法就没有用了,需要在tomcat文件夹下的conf/servler.xml中设置,找到一下代码,在最后加入URIEncoding=”UTF-8”
<Connector port="8080"
protocol="HTTP/1.1" connectionTimeout="20000"
redirectPort="8443"/>
改成:
<Connector port="8080"
protocol="HTTP/1.1" connectionTimeout="20000"
redirectPort="8443"
URIEncoding="UTF-8"/>
上述为我在开发过程中遇到的中文乱码问题,希望在看了这篇文章后能够解决大家的中文乱码问题。
SpringMVC开发过程中的中文乱码问题的更多相关文章
- springmvc项目中的中文乱码的解决及未生效解决
情景: springmvc项目中,在控制台输出时中文乱码,在web网页中正常. 解决方法: 在web.xml中添加如下代码: <!-- 中文乱码解决 --> <filter> ...
- 解决SpringMVC的@ResponseBody返回中文乱码
SpringMVC的@ResponseBody返回中文乱码的原因是SpringMVC默认处理的字符集是ISO-8859-1,在Spring的org.springframework.http.conve ...
- MAC下 mysql不能插入中文和中文乱码的问题总结
MAC下 mysql不能插入中文和中文乱码的问题总结 前言 本文中所提到的问题解决方案,都是基于mac环境下的,但其他环境,比如windows应该也适用. 问题描述 本文解决下边两个问题: 往mysq ...
- 分布式监控系统Zabbix-3.0.3-完整安装记录(4)-解决zabbix监控图中出现中文乱码问题
之前部署了Zabbix-3.0.3监控系统,在安装数据库时已经将zabbix库设置了utf-8字符. 首先确定zabbix开启了中文支持功能:登录到zabbix服务器的数据目录下(前面部署的zabbi ...
- zabbix解决监控图中出现中文乱码问题
首先确定zabbix开启了中文支持功能:登录到zabbix服务器的数据目录下(前面部署的zabbix数据目录是/data/www/zabbix),打开 locales.inc.php文件[root@Z ...
- Java Web 开发中的中文乱码与解决方式
乱码产生的原因 不管是request乱码还是response乱码,其实都是由于客户端(浏览器)跟服务器端采用的编码格式不一致造成的.以request乱码为例:浏览器向服务器发送请求,因为浏览器与服务器 ...
- jquery.ajax的url中传递中文乱码问题的解决方法
jquery.ajax的url中传递中文乱码问题的解决方法 JQuery JQuery默认的contentType:application/x-www-form-urlencoded 这才是JQu ...
- 解决loadrunner 脚本和replaylog中的中文乱码问题
解决loadrunner 脚本和replaylog中的中文乱码问题 解决这个问题必须认识到一个事实就是,loadrunner和测试服务器交换数据使用的是utf8格式,但是展现在replaylog中是使 ...
- 解决URL地址中的中文乱码问题的办法
解决URL地址中的中文乱码问题的办法 引言: 在Restful类的服务设计中,经常会碰到需要在URL地址中使用中文作为的参数的情况,这种情况下,一般都需要正确的设置和编码中文字符信息.乱码问题就此产生 ...
随机推荐
- 交换机Trunk端口配置
本文为转发,简单明了,我喜欢. Trunk端口的配置步骤如下: 一 组网需求: 1.SwitchA与SwitchB用trunk互连,相同VLAN的PC之间可以互访,不同VLAN的PC之间禁止互访: 2 ...
- CF#231DIV2:A Good Number
Let's call a number k-good if it contains all digits not exceeding k (0, ..., k). You've got a numbe ...
- ZYSocket 4.3.5 SOCKET框架组 发布[NEW]
最新代码请到 github: https://github.com/luyikk/ZYSOCKET 更新 4.3.5更新说明: 修复各种BUG. 重写了一份 protobuf-net 有什么用呢,不需 ...
- MySQL中的空间扩展
目录 19.1. 前言 19.2. OpenGIS几何模型 19.2.1. Geometry类的层次 19.2.2. 类Geometry 19.2.3. 类Point 19.2.4. 类Curve 1 ...
- 使用struts2和poi导出excel文档
poi眼下应该是比較流行的操作excel的工具了.这几天做了个struts2和poi结合使用来实现导出excel的功能.个人认为还是比較有用的.代码阅读起来也非常easy.下来就来分享下我的心得 1 ...
- android Gallery滑动不流畅的解决
import android.content.Context; import android.util.AttributeSet; import android.view.KeyEvent; impo ...
- could not create the java virtual machine(转)
打开不了myeclipse,报错“could not create the java virtual machine”,解决问题过程如下: 1.在D:\MyEclipse\eclipse有个eclip ...
- javascript 剔除数组中相同的值,合并数组中相同项
var a = ["2013-01","2013-01","2013-02","2013-02","2013- ...
- VB.net数据库编程(03):一个SQLserver连接查询的简单样例
这个样例,因为在ADO.net入门已经专门学了,再次进行复习 一下. 主要掌握连接字串的情况. 过程就是: 1.引用System.Data.SqlClient.而Access中引用 的是System. ...
- EasyUI - NumberSpinner 组件
效果: html代码: <input id="ss" /> JS代码: $(function () { $('#ss').numberspinner({ //属性继承自 ...