php解决网页显示'&# 32534;&# 30721'的乱码问题

前言

今天又跟类似编码的问题作了一番斗争....原因是,使用wordpress时,文章摘要显示一串中文后,最后一个字符显示'&# ’加数字。如图所示

QQ截图20191103122913.png

真的很影响阅读有木有..

原因

百度了一番(为啥不用谷歌呢?像这种问题一般都是中文才会出现的问题,所以百度得来的结果会更加有针对性。),终于找到了答案。

形如—— &#dddd; &#xhhhh; &#name; ——的一串字符是 HTML、XML 等 SGML
类语言的转义序列(escape sequence)。它们不是「编码」。

以 HTML 为例,这三种转义序列都称作 character reference:

前两种是 numeric character reference(NCR),数字取值为目标字符的 Unicode code point;
以「&#」开头的后接十进制数字,以「&#x」开头的后接十六进制数字。 后一种是 character entity
reference,后接预先定义的 entity 名称,而 entity 声明了自身指代的字符。 从 HTML 4 开始,NCR 以
Unicode 为准,与文档编码无关。

「中国」二字分别是 Unicode 字符 U+4E2D 和 U+56FD,十六进制表示的 code point
数值「4E2D」和「56FD」就是十进制的「20013」和「22269」。所以—— 中国
中国 ——这两种 NCR 写法都会在显示时转换为「中国」二字。

作者:梁海 链接:http://www.zhihu.com/question/21390312/answer/18091465

也就是说这并不是编码问题,而是一种转义序列

解决方法

找到源码,使用php的html_entity_decode方法。

$text = html_entity_decode($text);

处理之后,就显示正常了。

QQ图片20191103124338.png

Last modification:November 3rd, 2019 at 12:45 pm
如果觉得我的文章对你有用,请随意赞赏

Leave a Comment

召唤看板娘