关 键 词:
中文 支持 完全 php for delphi 字符集 数据库 utf8 程序
经过多次测试,终于明白delphi for php确实是完全支持中文的,先给各位看一下效果图(delphi for php程序的浏览器截图):
(PHP开发资源网>delphi for PHP专区)

这是mysql数据库在phpmyadmin系统下的截图:

从上面第一张图可看出,delphi for php已经实现了三个层次的中文支持:
第一层次:网页内容的中文支持,即在页面显示中文已没有问题;
第二层次:控件的中文支持,如按钮、复选框的中文支持;
第三层次:数据库控件的中文支持。这部分内容比较复杂,除要支持数据表字段内容的中文正常显示,还要支持中文字段名的正常显示,更重要的还要支持delphi for php程序与mysql数据库服务器中文数据交换的正常化。从上面第一张图与第二张图看,上述目标都已达到。
第一层次:网页内容的中文支持,即在页面显示中文已没有问题;
第二层次:控件的中文支持,如按钮、复选框的中文支持;
第三层次:数据库控件的中文支持。这部分内容比较复杂,除要支持数据表字段内容的中文正常显示,还要支持中文字段名的正常显示,更重要的还要支持delphi for php程序与mysql数据库服务器中文数据交换的正常化。从上面第一张图与第二张图看,上述目标都已达到。
第一部曲:
要使用delphi for php的update1版,之前的版本虽然也能达到页面内容显示中文的目标,但这不是完全的中文支持。
有了delphi for php编程软件后,新增一个form页面,只要将form的encoding属性设为GB2312或utf-8,即可实现页面正常显示中文。
要使用delphi for php的update1版,之前的版本虽然也能达到页面内容显示中文的目标,但这不是完全的中文支持。
有了delphi for php编程软件后,新增一个form页面,只要将form的encoding属性设为GB2312或utf-8,即可实现页面正常显示中文。
第二部曲:
本论坛及网上其他地方对控件的中文支持有不同描述,本人经过整理,其实现步骤是: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在字符集一致性等方面的原因,仍会显示乱码。
下面的内容涉及mysql字符集方面的知识,请有兴趣的朋友先研究一下相关知识,我们再继续。。。。。。
本论坛及网上其他地方对控件的中文支持有不同描述,本人经过整理,其实现步骤是: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在字符集一致性等方面的原因,仍会显示乱码。
下面的内容涉及mysql字符集方面的知识,请有兴趣的朋友先研究一下相关知识,我们再继续。。。。。。
第三部曲:
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!
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!
·Zope的优点及和Apache+PHP+MySQL的比较
·PHP面向对象、类经典教程[2]
·PHP面向对象、类经典教程[1]
·用 Xdebug 修正 PHP 应用程序中的错误(5)
·用 Xdebug 修正 PHP 应用程序中的错误(4)
·用 Xdebug 修正 PHP 应用程序中的错误(3)
·用 Xdebug 修正 PHP 应用程序中的错误(2)
·用 Xdebug 修正 PHP 应用程序中的错误(1)
·黑防黑:黑客口述—关于Php后门的隐藏技巧
·PRADO框架TDataGrid使用教程(1)
·PHP面向对象、类经典教程[2]
·PHP面向对象、类经典教程[1]
·用 Xdebug 修正 PHP 应用程序中的错误(5)
·用 Xdebug 修正 PHP 应用程序中的错误(4)
·用 Xdebug 修正 PHP 应用程序中的错误(3)
·用 Xdebug 修正 PHP 应用程序中的错误(2)
·用 Xdebug 修正 PHP 应用程序中的错误(1)
·黑防黑:黑客口述—关于Php后门的隐藏技巧
·PRADO框架TDataGrid使用教程(1)
热门技术文档
·Zope的优点及和Apache+PHP+MySQL的比较
·Windows 下的 PHP 扩展编程
·PHP面向对象、类经典教程[2]
·PHP面向对象、类经典教程[1]
·用 Xdebug 修正 PHP 应用程序中的错误(5)
·用 Xdebug 修正 PHP 应用程序中的错误(4)
·用 Xdebug 修正 PHP 应用程序中的错误(3)
·用 Xdebug 修正 PHP 应用程序中的错误(2)
·用 Xdebug 修正 PHP 应用程序中的错误(1)
·php时间求法(二)
·Windows 下的 PHP 扩展编程
·PHP面向对象、类经典教程[2]
·PHP面向对象、类经典教程[1]
·用 Xdebug 修正 PHP 应用程序中的错误(5)
·用 Xdebug 修正 PHP 应用程序中的错误(4)
·用 Xdebug 修正 PHP 应用程序中的错误(3)
·用 Xdebug 修正 PHP 应用程序中的错误(2)
·用 Xdebug 修正 PHP 应用程序中的错误(1)
·php时间求法(二)
最新图文档
本站编辑推荐:(本站开通Delphi4PHP专区,欢迎进入论坛交流!)
- · 3分钟快速了解 Delphi for PHP 特色 (中文), PDF档
- · 购买Delphi for PHP的五大理由, PDF档
- · Delphi for PHP 使用规格介绍, PDF档
- · Delphi for PHP 問答集 (From CodeGear)
- · Delphi for PHP 产品价格表
编缉最近更新文章
网站赞助商
搜索您感兴趣的内容




