如何让mysql支持中文gbk字符集

一个郁闷的问题,让我整整郁闷了一个晚上!
今天再次从网上查找了一下资料,不想一路顺风,终于OK!!回头思过,看来还是昨天晚上为了省时,多走了弯路….
总结了一下,大致如下:
1- 首先设置一下”my.ini”文件:

[client]
port=3306
character-sets-dir=”D:\MySQL\MySQL Server 5.1\share\charsets”
default-character-set=gbk

[mysql]
default-character-set=gbk

[mysqld]
default-character-set=gbk

2- 其次是自己在创建数据库时需要注意的,示例如下:

mysql> create database testgbk default character set gbk collate gbk_chinese_ci;

Query OK, 1 row affected (0.00 sec)

mysql> use testgbk;
Database changed
mysql> create table test(
    -> id int(3) unsigned not null auto_increment,
    -> name varchar(15) not null default ”,
    -> primary key (id)
    -> )type=MyISAM default character set gbk;
Query OK, 0 rows affected, 1 warning (0.08 sec)

3- 现在自己再插入数据看看:

mysql> insert into test values(1,’XXX’);
Query OK, 1 row affected (0.00 sec)

mysql> insert into test values(2,’XXX’);
Query OK, 1 row affected (0.00 sec)

mysql> insert into test values(3,’XXX’);
Query OK, 1 row affected (0.00 sec)

现在用MySql Query Browser来查看一下,看看效果如何:
[img][attach]350[/attach][/img]

不过,如果想在MySql Query Browser中使用中文来更新,插入,还是很容易崩溃的!不知道是我的设置问题,还是程序对中文的支持不够友好??郁闷!

下面这篇文章,是我参考的来源,特全文引用于:

链接:[url=http://www.ixdba.net/article/73/365.html]http://www.ixdba.net/article/73/365.html[/url]

在mysql数据库中,使用的是latin字符集,所以无法正常的支持中文字符,中文在数据库中显示为乱码“?”号。为了让mysql可以正常使用中文,尤其是当使用jsp连接mysql的时候,我们需要使用gbk的字符集,因此我们要对mysql进行以下设置,以便其有效的支持中文:

1.修改my.cnf文件
my.cnf文件是mysql的配置文件,我们可以从mysql的安装目录根据其自带模板来

建立
#cp /usr/local/mysql/support-files/my-huge.cnf  /etc/my.cnf
#vi /etc/my.cnf
在此文件中相应位置加入
default-character-set = gbk
########################
[client]
default-character-set = gbk
[mysqld]
default-character-set = gbk
#########################
修改结束以后,保存,然后使用客户端登录
#mysql -u root -p
在客户端中输入
>status;
显示的数据中如果出现:
Server characterset:    gbk
Db     characterset:    gbk
Client characterset:    gbk
Conn.  characterset:    gbk
则表示修改成功。

2.建立库表时指定gbk字符集
在建立库表的时候我们需要指定gbk字符集
建立数据库:

CREATE DATABASE dbname DEFAULT CHARACTER SET gbk COLLATE gbk_chinese_ci
建立数据表
Create table tablename(
id int(10) unsigned NOT NULL AUTO_INCREMENT,
name varchar(15) NOT NULL default ”,
PRIMARY KEY  (id)
) TYPE=MyISAM DEFAULT CHARACTER SET gbk

建立好以后,在客户端中使用:
>show cereate table tablename;
如果最后一行显示gbk,则表示成功

3.修改jdbc驱动
jsp连接mysql需要使用jdbc驱动,在使用的时候,我们需要设置好字符集
String user=”root”;
String password=”123″;
String url=”jdbc:mysql://localhost:3306/dbname?useUnicode=true&characterEncoding=gbk”
Class.forNname(“com.mysql.jdbc.Driver”);//装载驱动类;
Connection con=DriverManager.getConnection(url,user,password);//取得连接
其中dbname为你数据库的名字,url中的gbk即为使用的字符集

   做好以上三步以后,mysql就可以支持gbk中文了。

在PHP中向MySQL数据库插入数据

解决Incorrect string value错误
解决MySQL中类似Incorrect string value: ‘\xA9p\xC1\xF7\xB6\xAF…’ for column ‘pdetails’ at row 1的错误。
Incorrect string value
MYSQL按装时选的字符为GB2312。然后在PHP的程序中也有mysql_query(“set names gb2312”);
添加中文英文都正常。可是总有人会从别的网站上复制或自己输入一些字符为五笔圆角输入。这时就出现
Incorrect string value: ‘\xA9p\xC1\xF7\xB6\xAF…’ for column ‘pdetails’ at row 1
不为圆角输入就是正常的。不能添加进字符。大家帮帮忙。应怎么解决了?那个字段为 pendetails text gb2312_chinese_ci

解决方式
将该表的字符集从gb2312_chinese_ci修改为gbk_chinese_ci
这是由于字符集原因造成的。

测试OK:


$name=$_POST['name'];
$address=$_POST['address'];

$dbconn=@mysql_connect("localhost","root","*******");
if(!$dbconn){
  echo "

Unable to connect to the database server at this time.

";
  exit();
}

if(!@mysql_select_db("testgbk",$dbconn)){
  echo "

Unable to locate the testgbk table at this time.

";
  exit();
}

if(!$iawen){
  $sql="insert into student(name,address,year) values('".$name."','".$address."',curdate())";
  mysql_query("set names gb2312");
  if(mysql_query($sql)){
    echo "

Insert data successed!$name,$address

";
  }
  else{
    echo "

Error adding submitted:".mysql_error()."

";
  }
}
?>

发表评论