心血来潮,在服务器上装了MS Office 2003,还没有体会到生产力的提升,就发现Drupal系统中的Blog正文和评论变成了乱码。
仔细看看,发现编辑部分的正文是正确的,只是显示出来的是错误的。回头想想,乱码期间做了两件事:将Office从2000升级到2003,修改部分模块解决Drupal的中文搜索问题。是什么原因呢?
罢了,卸了你Office2003行不?我埋头苦干……嘿嘿,真还不行!
正好,我正看看什么时候升级Drupal for blogger到0.9版呢,就升吧。我埋头苦干……嘿嘿,还真不行!
看来,安装Office2003后系统中对字符集的处理已经发生了改变。联想到安装Office2003后我那可怜的Msn Messager由于我的档案文件地域选择了香港(因为没有大陆啊)而微软拼音自动的智能化的输入繁体字,我的Drupal的UTF-8中文字符必定也是遭此毒手了。
没办法,改Drupal源码吧。研究了NN分钟,发现问题出在htmlcorrector.module模块,但此模块我并未改动过,问题就在PHP的htmlentities函数上,现在它对UTF-8中文字符将进行错误的编码,而在此之前却是正常的。看来安装了Office 2003后系统对UTF-8的处理已经有了改变,这种改变卸载了Office 2003也不能逆转。
目前我的解决方法是:将htmlcorrector.module模块中对“text”的处理中的:
??????????? $output .= htmlentities(substr($text, $i, $block));
????????????改为:
??????????? $output .= substr($text, $i, $block);
仅仅修改了这一句也是安全风险,呵呵。大家不要黑我哈。

