PHP中文问题(Iconv、Mysql41)

近一周都在做短信接口和与 yoyorock.com?0?2的接口处理,可以说是进步不少。之间碰到的问题很多,没办法不想求人,只靠自己搞定,不过在我痛苦到极点的时候一个老程序员非常好心帮了我不少忙...

eYou.com?0?2的WEB程序全是统一的UTF-8处理,是由了邮件的系统的邮件显示而想到的,公司最近发布的新项目非常多,我算是赶上时候了...

我碰到的问题大概情况如下:

  • 所有页面编码都为UTF-8
  • 所有数据库编码都必须统一UTF-8

问题看上去没什么,解决:

  • 短信由公司一台服务器提供TELNET接口,我需要做的是通过PHP程序连接此服务器,然后 fput 发送短信的代码,这是比较容易的,需要用到 fsockopen 函数。
  • 解决所有页面都为UTF-8 算是第一关,这样意味着所有的页面都必须把中文(GBK或GB2312或GB18030)转换成UTF-8,好在这些东西都是公司有现成的,公司在CVS服务器 INSTALL PHP文件和模板的时候通过 INSTALL SHELL?0?2脚本把中文全部转换了。
  • 数据库设计时编码为UTF8也比较简单,只需 create table(...) default charset="utf8";
  • 不过在做数据操作的之前需要执行 mysql_query("SET NAMES 'UTF8'"); ,这是Mysql41的规范吧,一般默认的lating2应该是不用的...
  • 因为短信的最终客户端是用户的手机,移动公司是没有处理字符编码的,因此在发送短信时需要把 UTF-8 ICONV 成GBK(中文就行),这个是PHP的扩展(php_iconv.dll),在PHP5之前这个问题实在是麻烦,好在公司是最新的PHP5,这样我的工作也就简单多了 : $str = iconv("UTF-8", "GBK", $str); 这行程序就是把UTF-8 代码转换成中文。
  • 与 yoyorock 的接口工作主要是 XML 的操作,由我的程序向 yoyorock 的接口 POST 一段 XML代码,再由他们POST 回一段落XML代码,这些东西是花我时间最长的工作,由于代码现在无法查看,以后再写关于这些内容的一篇专题吧。

其实做过之后会感觉很简单,要提醒的是,当你的面页编码为 UTF-8 的时候,所有在你页面之间传输的数据的编码都将是 UTF-8 !

meiking   2005-06-06 21:30:45 评论:1   阅读:1891   引用:0
无题 @2005-06-08 17:45:55  meiking
纠正一下,不是移动公司没有做字符编码判断,应该说我也不清楚。 我的程序是通过一个短信发送服务器来发送的,我猜问题可能是出在那里面。

发表评论>>

署名发表(评论可管理,不必输入下面的姓名)

姓名:

主题:

内容: 最少15个,最长1000个字符

验证码: (如不清楚,请刷新)

谢智的个人博客 @CSS by self