MYSQL中频繁的乱码问题终极解决

 这个问题被问了好多遍了,干脆我写出来。

这个例子里用的编码是GB2312,如果你是其他的编码,修改GB2312为你自己的,比如UTF8
在MY.INI里添加:
[mysql]

default-character-set=gb2312
[mysqld]
default-character-set=gb2312

然后重新启动MYSQL服务。

进入数据库

alter database charset = gb2312;

还要记得在导入数据库的脚本的前面写上 set names gb2312;

这样就OK了。

================================================

mysql编码设置

 

MySQL的默认编码是Latin1,不支持中文,那么如何修改MySQL的默认编码呢,下面以UTF-8为例来说明

 

需要注意的是,要修改的地方非常多,相应的修改方法也很多。下面是一种最简单最彻底的方法:

 

一、Windows

1、中止MySQL服务

2、在MySQL的安装目录下找到my.ini,如果没有就把my-medium.ini复制为一个my.ini即可

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

4、启动MySQL服务

 

二、Linux

1、中止MySQL服务(bin/mysqladmin -u root shutdown)

2、在/etc/下找到my.cnf,如果没有就把MySQL的安装目录下的support-files目录下的my-medium.cnf复制到/etc/下并改名为my.cnf即可

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

4、启动MySQL服务(bin/mysqld_safe &)

 

非常简单,这样的修改一劳永逸,今后MySQL一切相关的默认编码均为UTF-8了,创建新表格的时候无需再次设置

需要注意的是,当前数据库中已经存在的数据仍保留现有的编码方式,因此需要自行转码,方法在网上有很多,不再赘述

 

 

 

此外,在web上也要设置为:

 

<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />

 

$id = mysql_connect("localhost","root","1314520");

 

mysql_query('set names utf8',$id);


------------------------------------------------------------------------------------


我用的版本是MySQL5.0.16,经过测试通过下面方法可以解决乱码问题。

1、设置phpMyAdmin

 

Language:Chinese simplified (zh-utf-8) MySQL 字符集:UTF-8 Unicode (utf8) MySQL 连接校对 gbk_chinese_ci

 

2、创建数据库

 

  将整理设置成 gbk_chinese_ci

 

 

3、用SQL建立表中

 

 

ENGINE=MyISAM DEFAULT CHARSET=gbk; ENGINE=InnoDB DEFAULT CHARSET=gbk AUTO_INCREMENT=40 ;

 

    也可以通过phpmyadmin来创建表,将所有varchar类型的整理属性设为:gbk_chinese_ci

 

 

4、检查表结构中

 

  varchar(100) 的整理属性为gbk_chinese_ci

 

  其它类型的整理属性为空。

经过上述方法设置后,在phpMyadmin中的数据库里的中文显示就不会是乱码了,但是我们用php文件显示数据库的数据时,还是会有乱码,于是还得进行下面的设置:

 

 

5、PHP程序代码中加上

 

  $db->query("SET CHARACTER SET GBK");

 

下面是我在连接文件中的设置,具体可以根据自己的程序来修改。

<?
   define("server","127.0.0.1");
   define("user","root");
   define("passwd","123456");

 $conn = mysql_connect(server,user,passwd); 
   mysql_select_db("database1",$conn);
   mysql_query("SET CHARACTER SET GBK");
  ?>


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值