Intereting Posts
mysql php выберите запись, похожую на другую PHP получает пустые переменные $ _POST из вызова Ajax Почему Ajax дает мне ошибку перекрестного происхождения, когда я могу сделать запрос с PHP? Лучшая практика для вывода PHP Crypto-Js различный вывод из mcrypt. После считывания данных для шифрования как получить множественный набор результатов из хранимой процедуры mysql в laravel Как вызвать несколько функций AJAX (для PHP) без повторения кода Применение css в php-таблице преобразовать массив в строку в PHP preg_replace, как заменить только шаблон xxx ($ 1) yyy внутри селектора В PHP, почему я могу получить доступ к нестационарному методу статическим способом? PHP: Предупреждение: sort () ожидает, что параметр 1 будет массивом, ресурс указан Обработка элементов в очереди SQS с помощью php-скрипта Укажите тип таблицы / механизм хранения в Doctrine 2 PHP. Как открыть файлы и прочитать их, а затем написать новые с помощью «x» строк в файле?

iconv – обнаружен незаконный символ в строке ввода

Я не вижу ничего незаконного – любые предложения о том, что может быть проблемой?

if (strtolower($matches[1]) != 'utf-8') { var_dump($matches[1]); $xml = iconv($matches[1], 'utf-8', $xml); $xml = str_replace('encoding="'.$matches[1].'"', 'encoding="utf-8"', $xml); } 

Ниже приведена моя отладка / ошибка

 string(12) "windows-1252" Notice (8): iconv() [http://php.net/function.iconv]: Detected an illegal character in input string [APP/models/sob_form.php, line 16] 

Я подтвердил, что приведенный выше код действительно является строкой 16

Недопустимый символ не находится в $matches[1] , но в $xml

Пытаться

 iconv($matches[1], 'utf-8//TRANSLIT', $xml); 

И показывая нам, что входная строка будет приятной для лучшего ответа.

Однако, если вы использовали принятый ответ, вы все равно получите уведомление PHP, если символ в вашей строке ввода не может быть транслитерирован:

 <?php $cp1252 = ''; for ($i = 128; $i < 256; $i++) { $cp1252 .= chr($i); } echo iconv("cp1252", "utf-8//TRANSLIT", $cp1252); PHP Notice: iconv(): Detected an illegal character in input string in CP1252.php on line 8 Notice: iconv(): Detected an illegal character in input string in CP1252.php on line 8 

Поэтому вы должны использовать IGNORE, который будет игнорировать то, что нельзя транслитерировать:

 echo iconv("cp1252", "utf-8//IGNORE", $cp1252); 

Я нашел одно решение:

 echo iconv('UTF-8', 'ASCII//TRANSLIT', utf8_encode($string)); 

использовать utf8_encode ()