zoukankan      html  css  js  c++  java
  • mysql5 乱码问题解决方案

    今天在写项目时碰到了mysql数据库数据乱码的问题,也从网上查了很多方法,前后折腾了两个小时才终于调整好。现在就把调整过程中碰到的一些问题记录下来:

    1.项目是SSH架构,一开始我以为是调用hibernate的save方法出现的问题,于是更改了applicationContext.xml中对hibernate的配置,在

    <property name="hibernateProperties"></property>中添加了下面两条属性:

    1 <prop key="connection.useUnicode">true</prop>
    2 <prop key="connection.characterEncoding">UTF-8</prop>

    但是经过测试,发现mysql中显示中文的字段依旧是一连串的问号。于是开始着手查找数据库自身的编码问题。

    2.按照网上说的,首先修改mysql的配置文件my.ini。

    在client中修改如下字段:default-character-set = utf8

    在mysqld中修改如下字段:

    character-set-server = utf8
    collation-server = utf8_general_ci

    在mysql中修改如下字段:default-character-set = utf8

    如果配置文件没有上述字段,自行添加即可。修改完成后发现情况依旧没有改观。于是只好看是查看数据库和数据库表的属性。

    3.打开命令行,首先输入show variables查看下面几个字段:

    character_set_client

    character_set_connection

    character_set_database

    character_set_server

    collation_connection

    collation_database

    collation_server

    是不是都变成了utf8。一般情况下修改了配置文件之后,上面几个字段都是没问题的。如果有问题,可以使用如下命令:set @@character_set_xxx = utf8解决。

    当然也可以输入status属性查看,情况都差不多的。

    4.上面的属性既然没错,那么只好手动修改数据库和数据库表的属性了。

    1 alter database db_name character set utf8
    2 
    3 alter table table_name character set utf8

    改好之后,再次尝试inset中文,发现依然是一串问号。这个时候已经基本无奈了,没办法,只好自己重新建了一个test数据库和test数据库表,并在建数据库和建表时设置了默认编码:

    1 create database test character set utf8;
    2 use test;
    3 create table test(id int primary key, name varchar(20) not null) default charset=utf8;

    这时,向测试代码插入数据竟然成功了。所以至此我才发现,之前所有的改动基本是正确的,只有对数据库和数据库表的修改不知为什么没有成功,还有待对mysql的深入研究吧。

    最后,把数据库和数据库表全部drop掉,再重新建一遍,中文乱码的问题得到解决。从hibernate向数据库插数据也没问题了。

    5.命令行显示中文可能会有些问题,因为windows命令行默认的是gbk编码(可以右键->属性查看到),所以我们还需要set names gbk来解决。但是,你如果用图形界面观察数据库中的数据,是没有问题的。

    6.如果到最后实在找不到解决办法:重装。但是,要是你根本没有尝试过一些解决方案就急不可耐的重装数据库,只能说作为一个工程师你还欠缺的太多。因为我们需要的是一种培养自己动手解决问题的能力。实话说,重装是最笨的解决办法了。

    所以,对网上那些动不动就喊着”重装一遍不就好了“的人嗤之以鼻,因为你根本不是在指导别人解决问题。

  • 相关阅读:
    NYIST 46 最少乘法次数
    OpenSSL命令---rsa
    Javah生成JNI头文件
    Stbdroid之ShapeDrawable
    Android之判断设备网络连接状态,并判断连接方式
    [置顶] 程序员必知(二):位图(bitmap)
    中断子系统8_软中断入口处理
    二叉搜索树的后续遍历序列
    整理生命
    sicily9162. RAZLIKA
  • 原文地址:https://www.cnblogs.com/iridescent/p/3680663.html
Copyright © 2011-2022 走看看