MySQL 4.1 新加的字符集支持

转载

其实是在用 phpMyAdmin 的时候发现的 MySQL 的这个新功能,同样一份 phpMyAdmin,在操作 MySQL 4.0 和 4.1 时界面变了很多。以前只能设定整个 MySQL 的默认字符集,现在可以单独设定每个 database 的,甚至同一个表的不同字段也可以设置不同的字符集,有些大的应用就应该会变得极为方便了。这里是[url=http://dev.mysql.com/doc/mysql/en/Charset.html]说明对字符集支持的章节[/url],还有这个[url=http://dev.mysql.com/doc/mysql/en/Charset-CONVERT.html]CONVERT()[/url]命令,和 PHP 的 iconv 一个用途。

[hr]

[b]Update in 2005-06-15[/b]

国人使用 MySQL 肯定不可能是用默认的 latin1,最好在 my.ini 里的 [client] 和 [mysqld] 各增加一行一了百了

[quote]
default-character-set = UTF8
[/quote]

当然,UTF8 也可以换成 GBK

[hr]

[b]Update in 2005-03-23[/b]

另外,MySQL 4.1 的字符集特性显然给老 PHP 程序造成了一些麻烦,在 [url=http://dream4ever.org/]Dreamland[/url] 看到有人[url=http://dream4ever.org/showthread.php?p=296928]给出了一种解决办法[/url]:

[quote]
[b]【原创】给php5的mysql ext增加了一个新的api和新的php.ini项目[/b]

php版本: 5.0.3

增加一个新的php.ini 项目
mysql.default_charset,作用范围: PHP_INI_ALL

增加一个新的api
mysql_charset('charset');

可以方便切换连接的charset
在升级老系统的时候,php默认总是latin1会造成很大麻烦,有了这个就可以不用修改原php脚本,简单多了。

在php脚本中,也可以通过
ini_set和新增的 mysql_charset切换

直接把两个文件放到 php-src/ext/mysql里,替换原有的文件,重新编译php

btw:
其实这次修改主要目的是增加php.ini里的项目,mysql_charset只是个副产品。
修改连接charset还可以通过 query('SET NAMES xxx')完成,不过最近升级老系统的时候发现这不是件容易的事,才做了这个patch
[/quote]

当然,还是期待 PHP 官方的扩充支持