纵有疾风起
人生不言弃

MySQL导入中文汉字出现乱码怎么办

  新手在做网站的时候经常会遇到数据插入数据库出现乱码的情况,原因很多。比如在创建数据库的时候常见的编码有GBK  utf8这个,编码不同就可能导致入库出现乱码

  mysql导入字体数字没有问题但导致汉字中文有问题我们就可以从字符编码问题来解决了,下面我来给大家介绍一下关于mysql乱码问题的处理方法.

1、脚本语句:导入之前,先charset gbk.

修改表字段编码,注意,这里用导入的方式插入的数据,控制台会报错,在我们的客户端工具中执行,就不会报错了.

2、MyBatis中,xml文件引入成为mapper的配置.

3、写junit测试类的时候,中文数据不能正常读取.

解决办法:字符串连接参数要添加一下.

修改my.ini文件:用记事本或UitraEdit打开mysql数据库安装目录下的my.ini文件打开,然后Ctrl+F搜索default-character-set,将后面的字符集修改为UTF8,注意要修改两个地方,一个事客户端的,一个是服务端的.

修改my.ini,添加以下语句:

  1. [client] 
  2. default_character_set=utf8 
  3. [mysqld] 
  4. character-set-server = utf8 
  5. collation-server = utf8_general_ci 
  6. [mysql] 
  7. default_character_set=utf8 
  8.  

重启mysql服务,再次运行,然后保存,重启mysql服务,如果服务器设置没问题,只是php连接时出mysql乱码我们可参考下面方法解决.

在mysql_connect后面加一句SET NAMES UTF8 或是GBK,根据数据库的设定而定,代码如下.

数据库采用UTF8编码,而页面申明编码是GB2312,这是最常见的产生乱码的原因,这时候在PHP脚本里面直接SELECT数据出来的就是乱码,需要在查询前先使用如下代码:

mysql_query(“SET NAMES GBK”)2 或 mysql_query(“SET NAMES GB2312”)2

例子代码如下:

$mysql_mylink = mysql_connect($mysql_host, $mysql_user, $mysql_pass)2

mysql_query(“SET NAMES 1UTF81”)2 //UTF8 这个就是你mysql字符编码了

MySQL 4.1的字符集支持(Character Set Support)有两个方面:字符集(Character set)和排序方式(Collation)。对于字符集的支持细化到四个层次: 服务器(server),数据库(database),数据表(table)和连接(connection)。下面将分两部分,分别设置服务器编码和数据库、数据表与连接部分的编码,从而杜绝中文乱码的出现。
 

服务器编码设置方法有二:

  一是安装mysql时,其中会有一个步骤选择编码方式,此时选择gbk即可。如果不选择,默认的编码是latin1;

  二是在安装玩mysql之后,手动修改其配置文件,如下:

  (1)修改 MySql安装目录下面的my.ini(MySQL Server Instance Configuration 文件)。 设置

        default-character-set=gbk(注意,有2处) 
  (2)修改data目录中相应数据库目录下的db.opt配置文件

        default-character-set=gbk
        default-collation=gbk_chinese_ci
下面将用一个例子完整地将上面的理论演示一遍,最后达到能向mysql中插入中文的目的:
  3.1 设置mysql服务器编码
  这一步请参见上文第一节,主要就是在安装mysql之后,修改my.ini和dataTable.db中的编码为gbk  
  3.2 创建一个数据库
  先连接到本地数据库:mysql -h localhost -u root -proot,接着创建一个数据库:
  mysql> create database test;  
  3.3 创建数据表并设置其编码
  – 中文编码测试数据表
  use test
  DROP TABLE IF EXISTS `test`.`test_nml`;
  SET @saved_cs_client = @@character_set_client;
  SET character_set_client = gbk;
  CREATE TABLE  `test`.`test_nml` (
    `id` TINYINT( 255 ) UNSIGNED NOT NULL AUTO_INCREMENT PRIMARY KEY,
    `content` VARCHAR( 255 ) NOT NULL
  ) ENGINE=InnoDB DEFAULT CHARSET=gbk COMMENT=’用户基本信息’;
  SET character_set_client = @saved_cs_client;

  这里的红色部分等价于上文中的TYPE = MYISAM CHARACTER SET gbk COLLATE gbk_chinese_ci;
  3.4 插入中文数据
  –插入数据
  SET @saved_cs_client = @@character_set_client;
  set names gbk;
  insert into test_nml values(null,’我是中文’);

  
  注意:每次执行insert或update或select连接操作时,都必须设置编码,即在前面加上:set names ‘gbk’;

未经允许不得转载:起风网 » MySQL导入中文汉字出现乱码怎么办
分享到: 生成海报

评论 抢沙发

评论前必须登录!

立即登录