16

我在本地站点中收到此错误。

Warning (2): htmlspecialchars(): Invalid multibyte sequence in argument in [/var/www/html/cake/basics.php, line 207]

有谁知道,这是什么问题或应该是什么解决方案?

谢谢。

4

6 回答 6

15

如果您的文件是这样编码的,请务必将编码指定为 UTF-8:

htmlspecialchars($str, ENT_COMPAT, 'UTF-8');

的默认字符集htmlspecialchars是 ISO-8859-1(从 PHP v5.4 开始,默认字符集被转换为 'UTF-8'),这可以解释为什么当它遇到多字节字符时事情会变得混乱。

于 2010-09-27T12:55:59.523 回答
5

我在生产中遇到了这个错误,发现了这篇很棒的帖子——

http://insomanic.me.uk/post/191397106/php-htmlspecialchars-htmlentities-invalid

它似乎是 PHP 中的一个错误(至少对于 CentOS),当显示错误关闭时会显示此错误!

于 2012-07-01T15:17:43.013 回答
4

您正在将损坏的字符数据输入函数,或者未指定正确的编码。

不久前我遇到了这个问题,旧的行为(我相信在 PHP 5.2.7 之前)是返回字符串,尽管有损坏,但是因为那个版本它会抛出这个错误。

我的解决方案包括编写一个脚本,使用 //IGNORE 修饰符通过iconv提供我的字符串以删除损坏的数据。

(我们有一个损坏的数据库,其中有一些 UTF-8 字符串,一些 latin-1 中的字符串通常在列上具有错误定义的字符类型)。

(查看对 Tatu 答案的评论,我将首先查看(并使用) $charset 变量的内容。

于 2010-09-27T19:30:15.167 回答
1

为了不出现任何错误,正确的代码是:

htmlentities($string, ENT_IGNORE, 'UTF-8') ;

除此之外,您还可以根据str_replace需要替换一些坏字符,然后使用 htmlentities 函数。

看看这个rss 提要,它将更大的 html 符号替换为 gt;阅读您的 RSS 提要时可能看起来不太好看的标签。您可以将其替换为“-”符号或“)”等。

于 2014-05-20T15:48:57.290 回答
1

有同样的问题,因为我substr在 utf-8 字符串上使用。
错误很少发生,而且看似随机。仅当在多字节字符上剪切字符串时才会发生错误!

mb_substr解决了问题:)

于 2014-10-23T13:10:32.977 回答
0

这实际上是我遇到的最常见的错误之一。

有时我不使用 __() 翻译 - 只是包含 äöü 的纯德语文本。尤其重要的是要注意文件的编码。

因此,请确保将包含特殊字符的文件正确保存为 UTF8。

于 2010-09-28T22:56:37.423 回答