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