您的位置:首页 > 编程语言 > Delphi

delphi for php 中文完全支持方法[转]

2012-01-15 03:26 387 查看
======================================================

注:本文源代码点此下载

======================================================

配置步骤:启动delphiforphp后:
tools—〉editor options—〉勾选use utf-8…………
设置php—〉default charset—〉utf-8
勾选set these values on php.ini
然后你就可以自由使用输入显示中文了。
注意,不要在网站目录上使用中文命名,据说这样会使软件速度变得很慢。
如果要配合mysql数据库的话:把mysql的编码改成utf-8就行了。
完整的中文支持方法:
1 要使用delphi for php的update1版,之前的版本虽然也能达到页面内容显示中文的目标,但这不是完全的中文支持。
有了delphi for php编程软件后,新增一个form页面,只要将form的encoding属性设为gb2312或utf-8,即可实现页面正常显示中文。
2 本论坛及网上其他地方对控件的中文支持有不同描述,本人经过整理,其实现步骤是:1、修改apache2的配置文件,让其应用utf-8字符集(注意同时修改http.conf和httpd.template.conf文件,以免被delphi for php启动时复原);2、设置delphi for php,让其应用utf-8字符集,同时也让php应用utf-8字符集;3、修改php配置文件,让其应用utf-8字符集(同时修改php.ini和
php.ini.template文件,原因同上),这部分的设置似乎在第2步已经完成了,当然用另一种方式设置一下也没关系啦。
至此,在delphi for php中将form的encoding设为utf-8,即可完全实现控件的中文支持。
到这一步后,数据库控件其实在代码层次已经支持中文了,但由于mysql数据库与php在字符集一致性等方面的原因,仍会显示乱码。
3 mysql 4以上的字符集支持(character set support)有两个方面:字符集(character set)和排序方式(collation)。对于字符集的支持细化到四个层次: 服务器(server),数据库(database),数据表(table)和连接(connection)。
因此需要将mysql和php的默认字符集都设为utf-8,如此设置以后,我们会发现一个问题:用delphi for php生成的php程序提交的中文数据,用phpmyadmin查看是乱码,但用原提交程序查看却一切正常;另一方面,用phpmyadmin输入的中文数据,用delphi for php生成的php程序查看是乱码,但用phpmyadmin查看却正常。
由此我们可以推断出:数据在传输及存储环节出现了字符集的不一致。
问题就出在这个connection连接层上!一般情况下,php连接mysql编码方式,如果没有显式的声明编码方式,都将使用latin1编码。一般的程序,都没有显式声明,所以,都是将utf8文本按latin1编码方式存在数据库,phpmyadmin再用utf8格式读取,肯定是乱码。如果php程序按正确的编码存入数据库,肯定是没有问题的。
因此需要显式声明如下变量:
set character_set_client=’utf8’
set character_set_connection=’utf8’
set character_set_results=’utf8’
上述声明与 set names ’utf8’等价,如此以来,解决问题的关键就变成了如何将 set names ’utf8’ 放入delphi for php程序并使其有效。
其实非常简单,在form中找到数据库控件,在其onafterconnect事件中加入一行:$this->控件名->execute(’set names utf8′);
一切ok!

======================================================

在最后,我邀请大家参加新浪APP,就是新浪免费送大家的一个空间,支持PHP+MySql,免费二级域名,免费域名绑定
这个是我邀请的地址,您通过这个链接注册即为我的好友,并获赠云豆500个,价值5元哦!短网址是http://t.cn/SXOiLh我创建的小站每天访客已经达到2000+了,每天挂广告赚50+元哦,呵呵,饭钱不愁了,\(^o^)/
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: