php怎么显示不出来汉字,RAD PHP 控件dbgrid如何显示汉字?

让千百万(夸张一下)人头疼的问题:是让this page的汉字不乱码,让dbgrid显示不乱码?

1、把网上高手关于dbgrid总结转载一下,已经很清楚了:

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′);

补充案例:

$this->dboscommerce1->execute("set

names utf8");

一切OK!

支持dbgrid显示汉字应该解决,包括显示汉字网页等。如果还不能搞定,别问我,呵呵。

2、网页标题汉字乱码问题

这个也是要命的问题,网上问的很多,但没有人答复。洒家在此给个办法,行不通也不要问我,呵呵。

a4c26d1e5885305701be709a3d33442f.png

在php.ini.template中修改:

添加: default_charset = "utf8" (有用吗?不知道)

添加:mbstring.internal_encoding = utf8 (有用吗?不知道,可能有用)

希望你能把真正的原因告诉我。

(试验的数据库mysql)

ok goodluck!

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值