Java项目整合中乱码问题解决方案

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/IT_PL/article/details/79245835

Java项目中乱码问题解决方案

环境编码:mysql数据库连接未设置全局编码格式为UTF-8(默认为GBK),创建数据库和表结构手工设置变为UTF-8,项目统一编码格式为UTF-8

通过下面一系列的配置,问题得到解决,但有很多不必要的麻烦,可以通过设置mysql全局的编码格式来避免此类问题

1.检查开发工具(eclipse为例),数据库(mysql和Navicat)及前端页面的编码格式是否统一
eclipse中:Window—>Preferences—>General—>Workspace
或者在Preference的搜素栏中搜索enc,会出现所有与编码有关的选项
这里写图片描述

数据库:
选择对应数据库,右键—>数据库属性
这里写图片描述这里写图片描述

前端页面:
这里写图片描述

前端请求传递的数据与后端响应返回的数据乱码问题
在jdbc连接配置中:
这里写图片描述
web.xml文件中:

<!-- 编码 -->
    <filter>
        <filter-name>encodingFilter</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>
        <init-param>
            <param-name>forceEncoding</param-name>
            <param-value>true</param-value>
        </init-param>
    </filter>
    <filter-mapping>
        <filter-name>encodingFilter</filter-name>
        <url-pattern>/*</url-pattern>
    </filter-mapping>

Tips:
在SSH整合中,此配置要放在Struts2过滤器前面,否则不生效

总结:上述部分问题出现的原因是由于mysql数据库没有设置全局统一的默认编码格式(UTF-8为例)导致,只在建数据库时手工设置了数据库编码格式为UTF-8,和表结构编码格式为UTF-8

关于Windows下MySQL设置全局编码格式的设置方式


在mysql的安装目录下找到配置文件
这里写图片描述
已存在my.ini直接打开修改即可,没有则复制已有的配置文件,如图中的my-defaul.ini文件,重命名为my.ini
修改后的内容:
这里写图片描述
修改完成后重启mysql服务,此时通过dos可以看到修改后的编码
这里写图片描述
说明修改成功
但在编码修改前Navicat中已经创建的连接在修改后部分编码(client,connection,results)不会被改变,浏览器访问时仍会出现乱码
该现象可以通过在Navicat中F6(或通过图形化选项:工具)进入到mysql命令行,执行:show variables ‘%char%’;命令查看
解决方法:
1、备份表结构和数据
2、新建连接,默认在新建的连接中包含了之前连接的所有内容
3、删除旧连接,将新建连接名称改为旧连接名称,可以通过命令查看再次查看编码格式,此时已经修改完成,
4、重新导入表结构和数据,

附:Navicat的sql脚本的导入和导出

  1. 导入
    这里写图片描述
    也可以直接拖入:找到本地sql文件,拖动到数据库名上,会出现一个虚线框,松开鼠标即可

  2. 导出

这里写图片描述

展开阅读全文

没有更多推荐了,返回首页