项目--解决MySQL数据库插入中文乱码

转载自:http://blog.csdn.net/zzh920625/article/details/51226312php

情景再现】html

         如图,在项目中使用MySQL数据库,在作插入操做时,写入英文字符没有问题,可是插入中文的时候数据库中的数据就像是这样:java

解决办法】mysql

     (1)无奈之余,跟了一遍代码,本觉得是在js方法向Controller传值中引发了相似于”TypeError”的错误,发现跟到了Server端D层数据库访问操做都没有发现有数据传递错误,So,学习新知识的机会又到了。sql

     (2)网上的资料显示,链接mysql库出现中文乱码的问题缘由有以下几个:数据库

            1.mysql自己设定问题,例如还停留在latin1版本;编程

            2.table的语系设定问题(包含character与collation);服务器

            3.客户端程式(例如PHP,Java)的连线语系设定问题;学习

 

       对于mysql自己设定的问题,若是是数据库版本太低致使插入中文失败,只须要到官网去升级就ok,毕竟mysql是免费的。编码

       而更多的缘由则是:选用的编码不对或者编码不一致形成的。对于mysql数据库和程序代码的编码方式的设定,下面详细分析:

 

【具体策略】

       如上所述,解决中文乱码的问题:

       首先明确MySQL的默认编码是Latin1,不支持中文,要支持中午须要把数据库的默认编码修改成gbk或者utf8。

 

       1、数据库端编码设置

       一、须要以root用户身份登录才能够查看数据库编码方式(以root用户身份登录的命令为:>mysql -uroot –p,以后两次输入root用户的密码),查看数据库的编码方式命令为:

>show variables like 'character%';

+--------------------------+----------------------------+

| Variable_name | Value |

+--------------------------+----------------------------+

| character_set_client | latin1 |

| character_set_connection | latin1 |

| character_set_database |latin1 |

| character_set_filesystem | binary |

| character_set_results |latin1 |

| character_set_server | latin1 |

| character_set_system |utf8 |

| character_sets_dir | /usr/share/mysql/charsets/ |

+--------------------------+----------------------------+

          从以上信息可知数据库的编码为latin1,须要修改成gbk或者是utf8(先以utf8为例);

          其中,character_set_client为客户端编码方式;

character_set_connection为创建链接使用的编码;

character_set_database数据库的编码;

character_set_results结果集的编码;

character_set_server数据库服务器的编码;

 

          现将这几种编码方式所有改成”utf-8”:

          本文仅仅介绍一种最根本的方法:

(1)停止MySQL服务

(2)在MySQL的安装目录下找到my.ini,若是没有就把my-medium.ini复制为一个my.ini便可

(3)打开my.ini之后,在[client]和[mysqld]下面均加上default-character-set=utf8,保存并关闭

(4)启动MySQL服务并查询此时编码方式:

mysql> show variables like 'character%'; #执行编码显示

+--------------------------+----------------------------+

| Variable_name | Value |

+--------------------------+----------------------------+

| character_set_client |utf8 |

| character_set_connection | utf8|

| character_set_database | utf8 |

| character_set_filesystem | binary |

| character_set_results |utf8 |

| character_set_server |utf8 |

| character_set_system | utf8 |

| character_sets_dir | /usr/share/mysql/charsets/ |

          当这八种编码方式编程utf-8的时候,此时mysql数据库便可插入中文

 

       2、程序端编码设置

        若是仅仅是作了以上的操做,直接向数据库中写入中文没有问题,可是从程序向数据库写入中文可能还会有问题,通过我上午的实验,总结以下:

      (1)多是在HTML页面中规定了程序的编码方式,此时修改成”utf-8”便可。

               <%@ page language=”C#” contentType=”text/html; charset=gbk”%>

      (2)Server端配置文件连接数据库端:

               <server=192.168.22.***;userid=root;password=123;Charset=utf8;database=>

               加入charset的格式”utf-8”便可。若是没有Charset的字段,手动添加便可。

       最好的方法就是整个解决方案里搜索”Charset”,将其余编码方式都统一为utf-8,由于要支持中午须要把数据库的默认编码修改成gbk或者utf8。

 

       总结两点:一、Mysql编码方式设置为支持中文的utf8或者gbk; 二、程序的编码方式设置成与数据库同步的utf8或者gbk。

       至此,该问题解决完毕,

相关文章
相关标签/搜索