我在本地站点中收到此错误。
Warning (2): htmlspecialchars(): Invalid multibyte sequence in argument in [/var/www/html/cake/basics.php, line 207]
有谁知道,这是什么问题或应该是什么解决方案?
谢谢。
我在本地站点中收到此错误。
Warning (2): htmlspecialchars(): Invalid multibyte sequence in argument in [/var/www/html/cake/basics.php, line 207]
有谁知道,这是什么问题或应该是什么解决方案?
谢谢。
如果您的文件是这样编码的,请务必将编码指定为 UTF-8:
htmlspecialchars($str, ENT_COMPAT, 'UTF-8');
的默认字符集htmlspecialchars
是 ISO-8859-1(从 PHP v5.4 开始,默认字符集被转换为 'UTF-8'),这可以解释为什么当它遇到多字节字符时事情会变得混乱。
我在生产中遇到了这个错误,发现了这篇很棒的帖子——
http://insomanic.me.uk/post/191397106/php-htmlspecialchars-htmlentities-invalid
它似乎是 PHP 中的一个错误(至少对于 CentOS),当显示错误关闭时会显示此错误!
您正在将损坏的字符数据输入函数,或者未指定正确的编码。
不久前我遇到了这个问题,旧的行为(我相信在 PHP 5.2.7 之前)是返回字符串,尽管有损坏,但是因为那个版本它会抛出这个错误。
我的解决方案包括编写一个脚本,使用 //IGNORE 修饰符通过iconv提供我的字符串以删除损坏的数据。
(我们有一个损坏的数据库,其中有一些 UTF-8 字符串,一些 latin-1 中的字符串通常在列上具有错误定义的字符类型)。
(查看对 Tatu 答案的评论,我将首先查看(并使用) $charset 变量的内容。
为了不出现任何错误,正确的代码是:
htmlentities($string, ENT_IGNORE, 'UTF-8') ;
除此之外,您还可以根据str_replace
需要替换一些坏字符,然后使用 htmlentities 函数。
看看这个rss 提要,它将更大的 html 符号替换为 gt;阅读您的 RSS 提要时可能看起来不太好看的标签。您可以将其替换为“-”符号或“)”等。
有同样的问题,因为我substr
在 utf-8 字符串上使用。
错误很少发生,而且看似随机。仅当在多字节字符上剪切字符串时才会发生错误!
mb_substr
解决了问题:)
这实际上是我遇到的最常见的错误之一。
有时我不使用 __() 翻译 - 只是包含 äöü 的纯德语文本。尤其重要的是要注意文件的编码。
因此,请确保将包含特殊字符的文件正确保存为 UTF8。