2006
01.12

经过几天的努力,在前几天故人居第一次升级完成的基础上进行了第二次大规模的升级,此次升级内容包括:

  1. 整个网站的程序和页面从 GB2312 字符编码升级为全部采用 UTF-8 的字符集编码,同时数据库方面也从 latin1 字符集编码升级为 UTF-8 字符集编码,这样的升级有助于支持多国语言操作系统的用户访问,目前国内的中文网站,很少有采用 UTF-8 字符编码开发的,要考虑和突破的技术细节还是不少,Google 的搜索引擎、易趣被Ebay收购后改版的网站目前是采用的 UTF-8编码。此项升级耗费了大量时间和精力,不过最终还是弄好了,感觉不错!

  2. 完全替换了故人居使用了三年多的老版论坛程序,原来的论坛是使用了2002年的Vbb2.1.6免费版本,在功能和性能方面均比较落后,虽然经过多次底层技术改进,还是显得比较落后,此次采用了Michael和朋友的技术团队开发的TBB2.0.0论坛程序,并进行了大量的定制修改,TBB论坛是参照国外多年来非常优秀的 Vbulletin 论坛的架构和功能进行开发的,在功能和性能方面均非常优秀。此次论坛升级因为要考虑到目前故人居论坛的用户和帖子、附件、悄悄话等内容不能丢失,所以在数据移植方面花了很大功夫,最终效果非常好:) 在此感谢TBB团队的支持!
  3. 新版的故人居在用户权限方面仍然和第一次升级一样,要求用户均需要进行email验证,如果老的用户没有经过email认证,不能成为正式会员,将有很多网站功能(比如聚会等)和论坛功能(比如查看附件图片)不能正常使用。
  4. 新版论坛提供了很多功能是老版没有的,比如会员头像大量丰富(此次升级,随机给所有会员选择了一个默认头像,会员可以自己进入控制面板修改),发贴表情和帖子信息图标大量丰富、发贴支持HTML编码、帖子楼层表示和针对具体楼层快速回复功能。。。。
  5. 新增加非常健全的论坛用户积分、声望、等级系统,用户可以通过发贴、回复、在线时间、声望评分等多种方式不断提升自己在论坛中的等级,并且显示不同的头衔和图片等

在完成上面的几项升级过程中,围绕着字符集编码转换方面真是费了不少周折,总结起来大致有下面一些问题

  1. 故人居底层采用了基于PHP 的PEAR 架构开发,部分PEAR模块在UTF-8字符集的处理上存在问题,此次升级中改进了不少模块代码,包括模板处理方面的一些模块、DB数据库模块、Email邮件模块等。
  2. 此次编码转换中遇到最麻烦的事情其实也是最简单的事情,但是确费了不少周折,值得记录下来,那就是UTF-8文件里面的BOM问题,开发的时候使用了Ultraedit的10.10b版本,结果自动加入了BOM,导致程序文件的开头三个字节是“0xEF 0xBB 0xBF” ,结果总是在页面顶端出现空行,查了不少资料才弄明白。。。郁闷。
  3. 另外一个问题就是数据库的编码转换,故人居使用的数据库版本就是当前很多人反映遇到乱码问题的4.1.x版本,最终经过不断的多次尝试,总算是搞定了数据库乱码和phpmyadmin下看到乱码的问题,其实关键点就是在使用mysqldump导出数据时使用compatible=mysql40 和 default-character-set=latin1 参数,然后使用类似 convertz 或者editplus工具转换为utf-8格式的文件,然后在文件最前面加上下面三行
    SET NAMES utf8;
    SET CHARACTER_SET_CLIENT=utf8;
    SET CHARACTER_SET_RESULTS=utf8;
    最后在新的utf-8编码的数据库(my.cnf中设置 character_set_server = utf8 )导入的时候加上 default-character-set=utf8参数导入即可,这样在phpmyadmin中看到的都不会是乱码了。

  4. php默认的字符集和mysql默认的字符集都是瑞典的latin1字符集,这个很奇怪,也导致了不少问题的出现,如果使用mysqli接口,可以直接指定字符集参数,如果使用老的mysql接口,就必须执行 mysql_query(“SET NAMES ‘utf8′;” ),然后才能保证使用的是utf8编码进行的数据库连接和操作。
  5. 另外,php中的iconv和mb_convert_encoding函数也是编写utf8程序常用的接口,非常必要,编译php时一定要加上,php5好像已经默认有了。

除了字符集上面遇到的问题外,另外一个最大的挑战就是从老版本的故人居vbb2.1.6论坛进行数据迁移到TBB ,两个论坛采用了很多不同的底层技术,迁移工作要求细致和耐心,要保留原来论坛的用户信息、论坛、悄悄话、帖子、附件等资料,好在最后工夫不负有心人,顺利完成!

接下来故人居会继续完成相册、商城的开发,同时还有自己开发的信息发布系统TCMS平台的挂接,最终的故人居将很值得期待。

顺便说一下,因为Michael还有好多其他事情要忙,故人居上投入的精力实在有限,导致很多计划都一拖再拖,望故人居的朋友们能多多理解!

3 comments so far

Add Your Comment
  1. 您可以去故人居的台球器材板块去看看,上面有不少帖子说到这方面的问题,访问地址 http://bbs.9tmd.com 基本上再北京买杆,买便宜公道的球杆(普通的)可以去沙子口文具用品市场,高档一些的杆就不能去那里了,去一些专卖店或者一些球厅里面去买比较合适!

  2. [...] PHP连接MySQL的字符集问题新发现 By Michael 之前我在一篇文章里面讲到把故人居网站升级为UTF8字符集,看过的也知道一些有关PHP和MySQL字符集的问题,通常情况下MySQL默认使用的字符集是latin1,如果我们的系统要使用utf8或者别的字符集,就需要对MySQL进行配置,并且在PHP程序中做一点处理,大致的方法如下: [...]

*
To prove you're a person (not a spam script), type the security word shown in the picture. Click on the picture to hear an audio file of the word.
Click to hear an audio file of the anti-spam word