帝国论坛帝国软件产品与服务帝国下载系统php5.4无法显示中文 【本版专题贴子】  
主题:php5.4无法显示中文 [加入收藏夹]   

mortal2002
用户头衔:书生

精华贴   :0
发贴数   :6
经验值   :94
注册时间:2008-07-04
信息 搜索 好友 发送悄悄话 精益求精-帝国网站管理系统7.5正式版开源发布】   [第 1 楼]
php5.4无法显示中文
最近做了个一个下站,每天下载(www.mtmeiju.com),发现php5.4无法显示中文,出现的现象是

1.模板无法显示,无法修改
2.发布的时候出现中文就提示 没有文件名称
3.前台注册用户发布数据后无法显示名称,但是前段提示发布成功


最终的问题是 htmlspecialchars 导致的
PHP 5.4.3 环境中测试了一个在 PHP 5.2 环境下运行正常的程序,却发现本应正常提交一个中文字符串到数据库的代码却提交了一个空字符串,经过排查,该字符串在经 htmlspecialchars 函数转义之前正常,而在转义之后却变成了空字符串。调用例子如下:
$str = '中文字符串';
$str_converted = htmlspecialchars($str);
echo $str_converted;
遂查看PHP手册,获知 htmlspecialchars 函数原型如下:
string htmlspecialchars ( string $string [, int $flags = ENT_COMPAT | ENT_HTML401 [, string $encoding = 'UTF-8' [, bool $double_encode = true ]]] )

更新日志里面又有提到:
5.4.0 The default value for the encoding parameter was changed to UTF-8.  
5.4.0 The constants ENT_SUBSTITUTE, ENT_DISALLOWED, ENT_HTML401, ENT_XML1, ENT_XHTML and ENT_HTML5 were added.  
PHP 从 5.4.0 版本开始第三个参数字符串编码的默认值改成了 UTF-8,而我这段代码中的中文编码正好是 GB2312 编码的,跟现在的默认参数不一致,于是更改调用参数如下:
$str = '中文字符串';
# 为了与旧环境兼容,这里第二个参数没有组合使用 PHP 5.4 新加入的 ENT_HTML401 常量
$str_converted = htmlspecialchars($str, ENT_COMPAT ,'GB2312');
echo $str_converted;
这样,“中文字符串”就可以正常显示了。为了使 PHP 5.4 之前环境中编写的代码能够向前兼容,建议调用 htmlspecialchars 函数的的时候都提供字符串编码参数。

[该贴被修改 1 次,最后修改时间 2015-04-20 10:41:37 ]



2015-04-20 10:40:12 已设置保密 顶部 回复 引用 报告 编辑 删除

jjfjj
用户头衔:探花

精华贴   :0
发贴数   :3167
经验值   :8721
注册时间:2009-02-12
信息 搜索 好友 发送悄悄话 免费开源-EBMA系统:更安全的MYSQL管理和备份系统】   [第 2 楼]

看不懂,用php5.2表示没遇过




2015-04-23 10:28:43 已设置保密 顶部 回复 引用 报告 编辑 删除

零距离
用户头衔:探花

精华贴   :0
发贴数   :4834
经验值   :12848
注册时间:2007-12-26
信息 搜索 好友 发送悄悄话 精益求精-帝国网站管理系统7.5正式版开源发布】   [第 3 楼]

是这样的,用php5.2或php5.3




2015-05-04 08:01:12 已设置保密 顶部 回复 引用 报告 编辑 删除

amandavid
用户头衔:书生

精华贴   :0
发贴数   :5
经验值   :17
注册时间:2016-08-24
信息 搜索 好友 发送悄悄话 免费开源-EBMA系统:更安全的MYSQL管理和备份系统】   [第 4 楼]

原帖由 mortal2002 于 2015-04-20 10:40:12 发表
最近做了个一个下站,每天下载(www.mtmeiju.com),发现php5.4无法显示中文,出现的现象是

1.模板无法显示,无法...

请问这个在哪个文件里修改?




2016-08-24 18:18:11 已设置保密 顶部 回复 引用 报告 编辑 删除

jjfjj
用户头衔:探花

精华贴   :0
发贴数   :3167
经验值   :8721
注册时间:2009-02-12
信息 搜索 好友 发送悄悄话 精益求精-帝国网站管理系统7.5正式版开源发布】   [第 5 楼]

楼上得搜索文件找了




2016-08-26 08:32:44 已设置保密 顶部 回复 引用 报告 编辑 删除

零距离
用户头衔:探花

精华贴   :0
发贴数   :4834
经验值   :12848
注册时间:2007-12-26
信息 搜索 好友 发送悄悄话 免费开源-EBMA系统:更安全的MYSQL管理和备份系统】   [第 6 楼]

搜索所有文件内容htmlspecialchars,都得修改




2016-09-02 08:25:35 已设置保密 顶部 回复 引用 报告 编辑 删除

落叶等待
用户头衔:书生

精华贴   :0
发贴数   :42
经验值   :88
注册时间:2016-08-27
信息 搜索 好友 发送悄悄话 精益求精-帝国网站管理系统7.5正式版开源发布】   [第 7 楼]

就是,我的也出现这个问题



成都装修www.cdbyzs.com
2016-09-08 09:50:50 已设置保密 顶部 回复 引用 报告 编辑 删除

非同小可
用户头衔:举人

精华贴   :0
发贴数   :409
经验值   :1218
注册时间:2008-08-04
信息 搜索 好友 发送悄悄话 免费开源-EBMA系统:更安全的MYSQL管理和备份系统】   [第 8 楼]

确实不支持php5.4




2017-04-12 08:22:07 已设置保密 顶部 回复 引用 报告 编辑 删除

就是你
用户头衔:探花

精华贴   :0
发贴数   :2085
经验值   :6131
注册时间:2009-01-17
信息 搜索 好友 发送悄悄话 精益求精-帝国网站管理系统7.5正式版开源发布】   [第 9 楼]

改php的默认编码成gb2312可以支持php5.4




2017-06-29 08:41:03 已设置保密 顶部 回复 引用 报告 编辑 删除

快速回复
内容

表情
使用EBB代码 使用smile代码 显示签名 自动分析url 自动分析img
     【进入高级模式】   (按 Ctrl+Enter 直接提交)
    顶部  加入收藏夹
关于帝国 | 广告服务 | 联系我们 | 法律声明 | 隐私条款 | 许可协议
Powered by: EBB Version 2.2.1