加拿大华人论坛 美国华人新闻详解mysql4.0以后的编码,配置
在加拿大
简要说一下mysql4.1以后的问题第一:mysql4.1的存储方式已经是utf8的了。。也就是说他的文件编码是utf8格式,我们不需要担心会有存储不了的字符第二:mysql服务器需要以一种编码方式来启动,设定连接(通讯)过来的字符编码是什么,就是所谓的我们的交流语言第三:mysql的client端,需要设定一种编码去和mysql的服务器端通讯,也是交流语言那么如何解决乱码的问题哪?有几个办法:第一,服务器端mysql和客户端mysql编译时候用相同的charset./configure --with-extra-charsets=big5,gbk,gb2312,utf8 --with-charset=utf8其中--with-charset=utf8就是设定服务器或者客户端的默认连接方式中的编码,当然你可以用各种编码,只要统一就可以。(我感觉这个是吓唬人的,因为就算你用--with-charset=gbk,在日文或者其他文字中也不会出现乱码)第二,在编译后进行设置,这个也有两种方式,读配置文件,或者直接加参数先说直接加参数的方式:以下是我用的一个服务器脚本,用来启动mysqlCODE:#!/bin/shrundir=`dirname "$0"`echo "$rundir"/usr/local/soft/mysql4112/bin/mysqld_safe --user=mysql --pid-file="$rundir"/mysql.pid --datadir="$rundir"/var "$@"-O max_connections=500 -O wait_timeout=60 -O key_buffer=32M --port=6000 --socket="$rundir"/mysql.sock --default-character-set=utf8 &其中可以看到服务器启动的连接编码为utf8,当然你可以用别的方式比如gbk客户端那更容易了/$mysqlpath/bin/mysql -hxxxx -uxxx -pxxx -P6000 --default-character-set=utf8呵呵,然后你在mysql中看到mysql>show variables;| character_set_client | utf8 || character_set_connection | utf8 || character_set_database | utf8 || character_set_results | utf8 || character_set_server | utf8 || character_set_system | utf8说一下参数character_set_system | utf8 这个是系统的文件编码,所有的都是utf8| character_set_database | utf8 这个就是我们服务器的启动的时候设置的编码其他几项是客户端的连接编码然后说通过my.cnf设置的方法,这个也分服务器和客户端的方式编译的时候我们可以通过--sysconfdir=/etc的方式设置my.cnf的读取目录以下是client端my.cnf一脚CODE:[client]#password = your_passwordport = 3306socket = /tmp/mysql.sockdefault-character-set=utf8 看一下就明白了,服务器端同理,不过是在[mysqld]下。ps:my.cnf的位置是个问题,如果编译的时候不设置sysconfdir的话,默认是在mysql的安装目录下的etc下面,这个目录需要你自己建一个,使用client端连接既可以读取。php有个问题,他的mysql连接不会读取mysql目录下的,而是读取/etc的根目录中的配置文件,不知道是不是个bug
·生活百科 在一小块单元中进行 FTTP 升级
·证券外汇 税务居民身份和税务影响