htmlspecialchars (): Недопустимая многобайтовая последовательность в аргументе

Я получаю эту ошибку на своем локальном сайте.

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 умолчанию для 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, я считаю) должно было возвращать строку, несмотря на коррупцию, но с этой версии вместо нее будет выбрасываться эта ошибка.

Мое решение заключалось в написании скрипта для подачи моих строк через iconv с использованием // IGNORE-модификатора для удаления поврежденных данных.

(У нас была поврежденная база данных с некоторыми строками в UTF-8, некоторые в латинском-1, как правило, с неверно определенными типами символов в столбцах).

(Глядя на комментарий к ответу Тату, я бы начал с рассмотрения (и воспроизведения) содержимого переменной $ charset.

Правильный код, чтобы не получить ошибку:

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

Помимо этого вы также можете использовать str_replace для замены некоторых плохих символов в соответствии с вашими потребностями, а затем использовать функцию htmlentities.

Взгляните на эту rss-ленту, заменив ее большим значком html на gt; тег, который может не понравиться при чтении RSS-ленты. Вы можете заменить это знаком «-» или «)» и т. Д.

Имел ту же проблему, потому что я использовал substr для строки utf-8.
Ошибка была нечастой и, казалось бы, случайной. Ошибка произошла, только если строка была вырезана на многобайтовом символе!

mb_substr решила проблему 🙂

На самом деле это одна из самых частых ошибок, которые я получаю.

Иногда я не использую __ () перевод – просто немецкий текст, содержащий äöü. Там особенно важно учитывать кодировку файлов.

Поэтому убедитесь, что вы правильно сохранили файлы, содержащие специальные символы, как UTF8.