博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
关于html_entity_decode、空格 以及乱码
阅读量:2386 次
发布时间:2019-05-10

本文共 1016 字,大约阅读时间需要 3 分钟。

普通ASCII码空格为32,但是浏览器会对普通空格进行自动归并,

也就是如果你输入10个0x20的空格在HTML页面里面,可能会被合并成一个空格。

如果想要一致的呈现多个空格,就要用到&nbsp,这个空格的编码为160,为西欧ISO-8859-1编码标准。

为了让经过HTML编码的内容还原为原来的文本字符,可以使用html_entity_decode方法,

但这样问题就来了,通常HTML编码内容为UTF8格式的,html_entity_decode在浏览器UTF8编码环境下会把

&nbsp转为一个黑色四方形状的乱码。只有切换为ISO-8859-1才能正确显示为空格。

所以在使用html_entity_decode之前,需要先把&nbsp替换掉(str_replace),这样就可以避免乱码问题。

示例:

 对下面这段字符串直接进行HTML解码后,会出现乱码的问题:

     $str = '真爱粉们,当时活动的一些精选片段吧~ </font></div><div><';$content = html_entity_decode($str);print_r($content );

143547_Lpxj_2557944.png

结果:

143326_1VTj_2557944.png

先将空格&nbsp;替换掉,然后再应用html_entity_decode解码后,就不会出现问题了。

                  $str = '真爱粉们,当时活动的一些精选片段吧~ </font></div><div><';  // 替换空隔符 $content = str_replace(" ","[space_code]",$str); $content = html_entity_decode( $content );  // 转换之后,再将空格符替换回来  $content = str_replace("[space_code]"," ",$content);    print_r($content );

还有一种简单的方法,htmlspecialchars_decode( )不用转换空格就可以转化并且不出现乱码:

     $str = '真爱粉们,当时活动的一些精选片段吧~ </font></div><div><';    $content = htmlspecialchars_decode($str);

转载于:https://my.oschina.net/corwien/blog/670180

你可能感兴趣的文章
高内聚 低耦合
查看>>
GTK/DirectFB两个闪烁的问题
查看>>
《Linux内核修炼之道》 之 高效学习Linux驱动开发
查看>>
编写可移植C/C++程序的要点
查看>>
DirectFB代码导读
查看>>
linux fork函数浅析
查看>>
内核启动时间优化
查看>>
基于Linux的多播编程
查看>>
网络字节序
查看>>
Linux网络命令详解
查看>>
GNU C 的 __attribute__ 机制
查看>>
atoi,atol,strtod,strtol,strtoul详解
查看>>
基于HZK16的汉字显示技术
查看>>
嵌入式web服务器对比
查看>>
select 函数使用指难
查看>>
人类的15个欲望与游戏设计
查看>>
高速缓存
查看>>
kernel基本功练习
查看>>
UNIX/LINUX 平台可执行文件格式分析
查看>>
轻量级服务器选择
查看>>