htmlspecialchars输出为空的问题

这个问题是在近期发生的,感觉自从 PHP 5.3升级到了 5.6以后好多地方出错。

试验了很多办法,只要用了htmlspecialchars就会输出为空。百度了下,找到了问题的所在。

因为php5.4之后对htmlspecialchars的默认编码做出了改变,为utf-8,库中的数据以及文件都是gbk的

解决办法呢,修改所有用到htmlspecialcahrs(‘‘,‘‘,‘ISO-8859-1‘)的地方,设定编码吧,或者在头部增加ini_set(‘default_charset‘,‘gbk‘);这个,,

在或者是封装一个函数,把用到这个函数的地方都替换掉。。。
当然了 大牛的做法如下:

直接修改源码,重编译!
修改ext/standard/html.c
大概在372行
/* Default is now UTF-8 */
if (charset_hint == NULL)
return cs_utf_8;
把cs_utf_8改成 cs_8859_1
/* Default is now UTF-8 */
if (charset_hint == NULL)
return cs_8859_1;

时间: 2024-08-01 19:22:09

htmlspecialchars输出为空的问题的相关文章

php5.4后htmlspecialchars输出为空的问题

从旧版升级到php5.4,恐怕最麻烦的就是htmlspecialchars这个问题了!当然,htmlentities也会受影响,不过,对于中文站来说一般用htmlspecialchars比较常见,htmlentities非常少用到. 可能老外认为网页普遍应该是utf-8编码的,于是苦了那些用GB2312,GBK编码的中文站......! 具体表现: $str = "9enjoy.com的php版本是5.2.10";echo htmlspecialchars($str); gbk字符集下

js把预定义的html字符串转换为 HTML 实体 htmlspecialchars 输出html实体内容包括标签,而不自动转义标签,只显示内容,类似php的htmlspecialchars

function htmlspecialchars(str){                      str = str.replace(/&/g, '&');            str = str.replace(/</g, '<');            str = str.replace(/>/g, '>');            str = str.replace(/"/g, '"');            str = st

php json_encode输出为空问题

这种情况一般是json_encode序列化数组时出现错误,错误原因有很多,可以通过json_last_error函数来查看错误原因!!! 可能的原因 ----------------------------------------------------------- 1.反斜杠,可以用stripslashes() 函数删除由 addslashes() 函数添加的反斜杠,可能还要用到urlencode ()- 编码 URL 字符串 --------------------------------

dedecms 列表每隔6行输出一个空li

{dede:list pagesize='33'} <li class="hang"><a href="[field:arcurl/]" target="_blank">[field:title /]</a><span class="sj">[field:pubdate function="MyDate('Y-m-d',@me)"/]</span>

1043. 输出PATest(20)

时间限制 400 ms 内存限制 65536 kB 代码长度限制 8000 B 判题程序 Standard 作者 CHEN, Yue 给定一个长度不超过10000的.仅由英文字母构成的字符串.请将字符重新调整顺序,按"PATestPATest...."这样的顺序输出,并忽略其它字符.当然,六种字符的个数不一定是一样多的,若某种字符已经输出完,则余下的字符仍按PATest的顺序打印,直到所有字符都被输出. 输入格式: 输入在一行中给出一个长度不超过10000的.仅由英文字母构成的非空字符

L1-023. 输出GPLT

L1-023. 输出GPLT 时间限制 150 ms 内存限制 65536 kB 代码长度限制 8000 B 判题程序 Standard 作者 陈越 给定一个长度不超过10000的.仅由英文字母构成的字符串.请将字符重新调整顺序,按“GPLTGPLT....”这样的顺序输出,并忽略其它字符.当然,四种字符(不区分大小写)的个数不一定是一样多的,若某种字符已经输出完,则余下的字符仍按GPLT的顺序打印,直到所有字符都被输出. 输入格式: 输入在一行中给出一个长度不超过10000的.仅由英文字母构成

Linux下date命令,格式化输出,时间设置

date命令的帮助信息 [root@localhost  source]# date --help用法:date [选项]... [+格式] 或:date [-u|--utc|--universal] [MMDDhhmm[[CC]YY][.ss]]以给定的格式显示当前时间,或是设置系统日期. -d,--date=字符串              显示指定字符串所描述的时间,而非当前时间  -f,--file=日期文件            类似--date,从日期文件中按行读入时间描述  -r,

C语言数据输入与输出

1 概论 C语言提供了跨平台的数据输入输出函数scanf()和printf()函数,它们可以按照指定的格式来解析常见的数据类型,例如整数,浮点数,字符和字符串等等.数据输入的来源可以是文件,控制台以及网络,而输出的终端可以是控制台,文件甚至是网页. 2 数据输出 从第一个C语言程序中,就使用了跨平台的库函数printf实现将一段文字输出到控制台,而实际上,printf()不仅可以将数据按照指定的格式输出到控制台,还可以是网页或者是指定的文件中,printf()函数执行的返回结果是输出字符的个数.

Python中中文输出显示以及列表初始化坑坑

通过网查得出,使用json中的dumps方式可以解决问题.一般在需要输出得上一步使用,这样可以便于其他错误得产生 import json # result = json.dumps(b, encoding='UTF-8', ensure_ascii=False)# list1 = ["陈","湖北"]# result = json.dumps(list1, encoding='UTF-8', ensure_ascii=False)# print result 这里在