Chinaunix首页 | 论坛 | 博客
  • 博客访问: 2263812
  • 博文数量: 168
  • 博客积分: 6641
  • 博客等级: 准将
  • 技术积分: 1996
  • 用 户 组: 普通用户
  • 注册时间: 2007-06-02 11:49
文章存档

2020年(4)

2019年(6)

2017年(1)

2016年(3)

2015年(3)

2014年(8)

2013年(2)

2012年(12)

2011年(19)

2010年(10)

2009年(3)

2008年(17)

2007年(80)

分类: LINUX

2008-11-27 18:44:18

配置源码安装的MySQL同时支持多个字符集
 
2008-11-29 TsengYia#126.com http://tsengyia.blog.chinaunix.net/
 
################################################################
系统环境:RHEL5 [ 2.6.18-8.el5xen ]
软件环境:
    httpd-2.2.8
    mysql-5.0.22
    php-5.2.6
 
    这里仅提供编译安装mysql、httpd、php源码时和字符集相关的几处设置,详细安装过程不作阐述。
##########################################################################################
一、mysql的多字符集支持
    1、设置mysqld服务同时支持多个字符集
        将mysqld服务的默认字符集改为utf8,并同时支持latin1、gbk、gb2312、big5、ascii字符集。可以为不同的数据库、表使用不同的字符集编码。
 
        Step1:./configure步骤时需增加字符集支持选项,例如:
shell> ./configure --with-charset=utf8 --with-collation=utf8_bin --with-extra-charsets=big5,ascii,gb2312,gbk,utf8,latin1
 
          //默认的字符集缺省为latin1。
          //其中,utf8对应可用的collation值为:utf8_bin、utf8_general_ci、utf8_unicode_ci
          //extra支持也可以使用 "--with-extra-charsets=all"。
 
        Step2:在make步骤之前,修改config.h头文件,查找utf8、gbk、gb2312等定义字符集变量的行,确认有如下内容(如果没有则需要手动添加),例如:
#define HAVE_CHARSET_ascii 1
#define HAVE_CHARSET_big5 1
#define HAVE_CHARSET_gb2312 1
#define HAVE_CHARSET_gbk 1
#define HAVE_CHARSET_latin1 1
#define HAVE_CHARSET_utf8 1
 
          //一开始没有修改config.h,费了好多功夫,"mysql>"环境中使用非默认字符集时总报"Error 1115"错误:
mysqld> set names gbk;
ERROR 1115 (42000): Unknown character set: 'gbk'

          //后来发现在./configure完成后,config.h文件中并没有自动打开gbk、gb2312等变量定义,不得不手动修改添加。
 
    2、验证mysqld服务的多字符集支持
        1) 查看当前mysql数据库支持的字符集
mysql> show character set;
 
        2) 查看对应字符集可用的校对规则
mysql> show collation like 'gb%';
mysql> show collation like 'utf8%';
 
        3) 查看当前mysql服务器使用的默认字符集状态
mysql> status
……
Server characterset:  utf8
Db     characterset:  utf8
Client characterset:  utf8
Conn.  characterset:  utf8
 
        4) 在创建数据库时指定使用的默认字符集:
mysql> create database testdb default character set utf8;
mysql> show create database testdb;     //验证数据库建立信息
 
        5) 在创建数据表时指定使用的默认字符集:
mysql> create table testdb.tb1 ( id int(10) unsigned NOT NULL AUTO_INCREMENT,name varchar(15) NOT NULL default '',PRIMARY KEY  (id) ) ENGINE=MyISAM DEFAULT CHARACTER SET gb2312;
mysql> show create table testdb.tb1;     //验证数据表建立信息
 
        6) 在mysql>客户端环境中设置使用的默认字符集
mysql> set NAMES utf8;
 

二、设置httpd的默认字符集
    1、编译安装时,./configure步骤中增加 '--enable-charset-lite' 配置项。
 
    2、配置httpd.conf文件,在全局配置中增加 "AddDefaultCharset utf-8",使用字符集名或别名均可。
       使用 "AddDefaultCharset off" 将关闭此功能,使用 "AddDefaultCharset on" 将使用apache内部的默认字符集iso-8859-1。
 
       常用的几种字符集及别名对应如下:
            Name  --->  Alias
            gbk         cp936
            gb2312      chinese
            gb18030     无
            utf-8       无
            big5        csbig5

            —— 详见:
 

三、php的字符集支持
    配置php.ini文件,增加 default_charset = "utf-8" 。
 
阅读(1620) | 评论(0) | 转发(1) |
给主人留下些什么吧!~~