mysql乱码问题

    技术2022-06-29  59

    在检查了JSP页面、servlet、action以及web服务器之后,发现所有的配置均不会造成乱码的可能了。于是去找数据库的问题,本篇文章只针对mysql。

     

    其实很简单,首先确认

    1、数据库的字符类型

    2、确认表的字符类型

    3、使用以下语句查看数据库字符类型:

    SHOW VARIABLES LIKE 'character%'; SHOW VARIABLES LIKE 'collation_database%';

     

    以所需字符集为UTF8为例,在确认前两点后,这两条语句应该能查出不是UTF8的配置。

    印象当中是character_set_server 和collation_database不是UTF8。于是查出了

    一种解决办法,如下语句:      mysql> SET character_set_client = utf8 ;   mysql> SET character_set_connection = utf8 ;   mysql> SET character_set_database = utf8 ;   mysql> SET character_set_results = utf8 ;   mysql> SET character_set_server = utf8 ;   mysql> SET collation_connection = utf8 ;   mysql> SET collation_database=utf8 ;   mysql> SET collation_server=utf8 ;

    虽然设置成功了,但是仍然乱码,而且数据库重新启动后编码格式又变为set以前的字符集。所以用set语句行不通。

    最后想到了刚学mysql时的办法,修改配置文件。

     

    windows系统下:修改my.ini

    [mysql]下加入:

    default-character-set=utf8

    [mysqld]下加入

    default-character-set=utf8

     

    linux系统下:

    [client]下加入:

    default-character-set=utf8(此处之所以和windows下不同,我认为是不同系统下mysql版本问题,不对的话大家指正啊!)

    [mysqld]下加入

    default-character-set=utf8

     

    这样的话数据库重新启动,字符集也不再变动了,乱码问题解决。比较麻烦的办法也有,就是在使用启动命令

    之后直接加上 default-character-set=utf8,这样也可以,只是每次启动时麻烦一点而已。


    最新回复(0)