|
前言:
说实话, 凉鞋也觉得 UTF8 是好东西…… 毕竟同屏显示中日韩对东亚人的吸引力是不小的…… (当然好处不仅是这点啦……) 不仅是网页程式…… 很多应用程式的内核都开始使用 Unicode 编码…… 目的是显而易见的:支援多语言显示…… 微软的所有软体都是 Unicode 内核…… 所以日文软体拿到你的中文 XP 上是可以正常显示的…… 而中文 98 就会因为 GB 内核安装其他语言软体时造成乱码……
至于 UTF8 , 可以说是 Unicode 的一个分支, 它用三个字节保存一个汉字…… (Unicode 用四个字节) 应用软体都集体投奔 Unicode 了…… 就不允许我们搞网页程式的用 UTF8?
本文中凉鞋就尽量多方位介绍一下 UTF8 编码下的 PHP 编程…… 至于为什么单独介绍“中文”…… 一来是因为英文这玩意实在不需要考虑 UTF8 …… 除非你准备做多语言系统…… (我要发些牢骚:现在的老外写程式时根本不重视这个问题……) 二来是中日韩等多字节语系在 UTF8 编码下的处理方式其实大同小异…… 依葫芦画瓢即可…… 好……先从数据库处理部分开始吧……
========================================== 连接数据库
很多人刚升级到 Mysql 4.1 时会发现数据乱掉了…… 其实是因为 Mysql 从 4.1 开始支援字符集了…… 而且默认字符集正是 UTF8 …… (充分证明与国际接轨的重要性…… 嘿嘿……) 而以前我们大多使用 utf8 或是 GBK 编码…… 这样以来输出的数据当然是乱码…… 要解决乱码…… 就得让程序知道该获取什么编码的数据……
我们假设你以前的数据库是 utf8 编码的…… 那么你可以在查询前添加一句
mysql_query('SET CHARACTER SET utf8') or die("Query failed : " . mysql_error()); 当然,由于 4.1 以上才需要这样处理, 因此我们可以加上判断:
$mysqlversion = $db->query_first("SELECT VERSION() AS version"); if ($mysqlversion['version'] >= '4.1') { mysql_query('SET CHARACTER SET utf8') or die("Query failed : " . mysql_error()); } 这样以来不管 Mysql 默认编码是什么都可以正常存取了…… (不论您是存活期,还是存定期,甚至是零存整取都没有问题鸟……)
但是,人家都国际化鸟…… 您还在用 utf8 行么? 如何转码呢? 还有…… 数据升级时出现乱码怎么办? 凉拌! 且听下回分解……
============================================ 数据升级至 4.1
要升级…… 就得先导出…… 要说老外还真不负责…… 以前的导出方式总是弄丢一些中文字符…… 比如把“我爱你娘”弄成“我爱你”啦…… (通常是丢失一段数据最末尾的字) 整个儿差了一辈儿…… (用石榴姐的话说就是“这么大逆不道的事实在是太刺激了”……) 为了保护您脆弱的心脏…… 也为了维护中国传统伦理道义…… 您可以把数据包含中文字符的字段改为二进制(Binary)编码…… 具体方法嘛…… 可以运行这个语句:
ALTER TABLE `表名` CONVERT TO CHARA [1] [2] [3] 下一页 |