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"/>

上述为我在开发过程中遇到的中文乱码问题,希望在看了这篇文章后能够解决大家的中文乱码问题。

时间: 2024-10-20 20:35:09

SpringMVC开发过程中的中文乱码问题的相关文章

JSP开发过程遇到的中文乱码问题及解决方案

JSP开发过程遇到的中文乱码问题及解决方案 来源:偶my耶的博客 发布时间:2015-03-31 阅读次数:543 8 对于程序猿来说,乱码问题真的很头疼,下面列举几种常见的乱码. 1.数据库编码不一致导致乱码 解决方法: 首先查看数据库编码,输入: show variables like "%char%"; 确认编码一致,如果不一致,可输入: SET character_set_client='utf8'; SET character_set_connection='utf8'; S

解决SpringMVC的@ResponseBody返回中文乱码

SpringMVC的@ResponseBody返回中文乱码的原因是SpringMVC默认处理的字符集是ISO-8859-1,在Spring的org.springframework.http.converter.StringHttpMessageConverter类中可以看到如下代码: public static final Charset DEFAULT_CHARSET = Charset.forName("ISO-8859-1"); 解决返回中文乱码的问题有两种,第一种是局部的,只针

解决jsp中的中文乱码问题笔记

一.JSP页面显示乱码 二.表单提交中文时出现乱码 三.数据库连接 大家在JSP的开发过程中,经常出现中文乱码的问题,可能一至困扰着您,我现在把我在JSP开发中遇到 的中文乱码的问题及解决办法写出来供大家参考. 一.JSP页面显示乱码 下面的显示页面(display.jsp)就出现乱码: <html> <head> <title>JSP的中文处理</title> <meta http-equiv="Content-Type" con

解决Centos 6.3 中 gedit中文乱码问题

1.安装gconf-editor yum list | grep conf-editor yum install gconf-editor 2.运行gconf-editor 设置: apps  ---> gedit-2  --->  preferences  ----> encoding auto-detected 项添加Add New list value: GB2312 shown_in_menu 项添加 New list value: GB2312  解决Centos 6.3 中

jsp get方式请求参数中包含中文乱码问题解决

1. 自己接收到参数之后在后台进行转码处理 2: 修改tomcat的配置文件  server.xml <Connector port="8080" protocol="HTTP/1.1" connectionTimeout="20000" redirectPort="8443" URIEncoding="utf-8"/> 即可 jsp get方式请求参数中包含中文乱码问题解决,布布扣,bubuk

分布式监控系统Zabbix-3.0.3-完整安装记录(4)-解决zabbix监控图中出现中文乱码问题

之前部署了Zabbix-3.0.3监控系统,在安装数据库时已经将zabbix库设置了utf-8字符. 首先确定zabbix开启了中文支持功能:登录到zabbix服务器的数据目录下(前面部署的zabbix数据目录是/data/www/zabbix),打开 locales.inc.php文件[[email protected] include]# pwd/data/www/zabbix/include[[email protected] include]# vim locales.inc.php 然

C#中WebClient中文乱码的解决办法

原文:C#中WebClient中文乱码的解决办法 第一次尝试: string question = textBox1.Text.ToString(); WebClient youdao = new WebClient(); youdao.Encoding = System.Text.Encoding.GetEncoding("GB2312"); Uri uri = new Uri("http://xxxxxxxxxxxxxx"); textBox1.Text =yo

cocos2dx学习笔记(4)——VS2010中的中文乱码问题

当你想使用中文时,你是否有这样的一个困惑. 把样例中的HelloWorld改成中文的 "你好,世界!". 然后编译运行,发现居然是个乱码!!! 因为cocos2dx中使用的是UTF-8字符集,而VS中确实ANSI. 所以我们需要对其进行字符集转换. 然后纵里寻它求百度,终于找到了解决方案. 一个函数搞定! #include "cocos2d.h" char* toUTF(const char* strGB2312) { int iLen = MultiByteToW

jquery.ajax的url中传递中文乱码问题的解决方法

jquery.ajax的url中传递中文乱码问题的解决方法 JQuery JQuery默认的contentType:application/x-www-form-urlencoded 这才是JQuery正在乱码的原因,在未指定字符集的时候,是使用ISO-8859-1 ISO8859-1,通常叫做Latin-1.Latin-1包括了书写所有西方欧洲语言不可缺少的附加字符. JQuery的Ajax根本没有考虑到国际化的问题,使用了欧洲的字符集,所以才引起了传递中文出现乱码的问题. 而我们的UTF-8