html_entity_decode():不支持charset`ASCII'

时间:2017-06-15 15:12:18

标签: php warnings

我的php.log(PHP错误日志)每天都填满以下一行:

  

PHP警告:html_entity_decode():不支持charset ASCII,假设第149行的/....php中有iso-8859-1

第149行看起来像:

$html = html_entity_decode($html, ENT_QUOTES, mb_detect_encoding($html));

html_entity_decode()的用法是根据php.net,所以我错过了什么?

1 个答案:

答案 0 :(得分:1)

您理所当然地认为mb_detect_encoding()是一种工具,可以确定文本使用的编码方式。事实上并非如此。完成自动编码检测是不可能的,而且该功能甚至都没有尝试。

你得到了ASCII。然后要求PHP将HTML实体解码为US-ASCII。 由于好的旧7位US-ASCII几乎不能存储大约一百个可打印的字符,这大部分都是不可能完成的任务。

确定HTML编码的正确方法是:

  1. Web服务器的Content-Type标头(如果有):

    Content-Type: text/html; charset=UTF-8
    
  2. 否则为HTML元标记:

    <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
    <meta charset="utf-8">