• 数据库插入中文变成问号


    今天做一个关于ssm的项目,数据库用的是MySQL,但是遇到一个比较奇葩的乱码问题,数据库里面存的中文取出来变成了问号,存进去的中文也变成了问号,但是手动添加到数据库中的中文取出来又是显示正常的。一路查了很多资料,终于解决了,然后加上自己的分析,整理了一下思路。

    乱码问题出现的情况有很多种,针对web开发这一流程来说,可以根据数据的流向来定位乱码出现的位置。前台发起一个请求,数据通过http协议到后被接收,这里数据会进行一次编码,在ssm环境下,是springMVC来拦截请求进行处理,所以在springMVC中能配置数据的编码格式,springMVC提供的是一个filter,在web.xml中配置。

    <!-- 编码过滤器 -->
        <filter>
            <filter-name>springfilter</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>springfilter</filter-name>
            <url-pattern>/*</url-pattern>
        </filter-mapping>

    如果经springMVC拦截的中文参数没有出现乱码,则说明这里的编码没有出现问题,然后进一步去分析数据的流向。ssm的环境下是mybatis框架与数据库进行交互,mybatis本身对数据不会进行编码,但是在与数据库交互的时候会有编码的问题,比如在jdbc配置的时候,数据库连接这里有一个编码的参数需要配置。

    driver=com.mysql.jdbc.Driver
    url=jdbc:mysql://localhost:3306/user?useUnicode=true&amp;characterEncoding=UTF-8
    username=root

    如果以上的配置都确定没有问题和,那么很大可能性就是数据库乱码了,在新建数据库的时候需要选择一个数据的编码方式。

    这里如果也没有问题那就可能就我碰到的问题,数据库存的中文变成问号。在MySQL的安装目录(默认在C:Program FilesMySQLMySQL Server 5.x)修改my.ini可以解决。mysql中文显示乱码或者问号是因为选用的编码不对或者编码不一致造成的,我是通过修改my.ini配置文件解决了中文变问号的问题。5.7之后没有这个配置文件。

    在[client]节点下添加  default-character-set=utf8 

    在[mysqld]节点下添加 (注:collation是排序方式)
           character-set-server=utf8 
          collation-server=utf8_general_ci 

    修改完my.ini文件后,需要重启MySQL服务,在cmd中输入以下命令可以启动或关闭MySQL的服务,也可以在任务管理器--->服务 中手动关闭或开启。

    关闭服务 net stop mysql

    开启服务 net start mysql

    最后可以登录MySQL看看配置是否成功。

    输入 mysql -u root -p      进入mysql数据库,如果输入这个命令显示MySQL不是一个命令,需要把MySQL安装目录下的bin 这个路径配到环境变量中去,就可以使用这个命令登录MySQL。

    输入密码:*****

    show variables like 'char%';  显示编码格式

    如果都为utf8那就说明配置成功,再去看看乱码问题解决了没。

  • 相关阅读:
    《设计模式
    JConsole监控远程Tomcat服务器
    Linux下Nginx+tomcat应用系统性能优化
    nginx 解决400 bad request 的方法
    lvs、haproxy、nginx 负载均衡的比较分析
    三种LVS负载均衡技术的优缺点----负载均衡调度算法
    LVS集群的体系结构
    LVS--什么是LVS?
    七、Nginx学习笔记七Nginx的Web缓存服务
    六、Nginx 防盗链
  • 原文地址:https://www.cnblogs.com/hello-daocaoren/p/7846990.html
Copyright © 2020-2023  润新知