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
纠正一下,不是移动公司没有做字符编码判断,应该说我也不清楚。 我的程序是通过一个短信发送服务器来发送的,我猜问题可能是出在那里面。
