Совершенно просто: utf8_encode ($ string) заменяет регулярные пробелы неразрывными пробелами ("\ u00a0"). Я попытался фильтровать результат с помощью str_replace:
str_replace("\u00a0", " ", utf8_encode($string))
Но это не исправить.
EDIT: Вздох, я идиот. Это не проблема с utf8_encode (). Я думал, что использую эту функцию, забыл, что я отключил ее в своем коде. Мои данные запускаются через json_encode () для запроса AJAX. Это проблема с json_encode ()? Я боюсь, что я могу быть виновным в злоупотреблении Stack Overflow. Я попробую разыграть его.
ЗАКЛЮЧИТЕЛЬНЫЙ РЕДАКТИРОВАНИЕ: проблема заключалась в самих данных, которые были скопированы из документа Word в таблицу MySQL. Все пробелы были скопированы как неразрывные пробелы. Извините за то, что тратишь время всех.
str_replace ("\ u00a0", "", utf8_encode ($ dat)). Но это не исправить.
PHP имеет только байтовые строки, а не собственные строки Unicode; следовательно, нет выхода \u
и вы просили его буквально преобразовать последовательности обратной косой черты-буквы в входе.
Чтобы избавиться от неиспользуемых пробелов, вам придется заменить \xA0
(если это делается по данным ISO-8859-1, которые, предположительно, перед передачей в utf8_encode
) или \xC2\xA0
(если это сделано после перекодирования в UTF- 8).
utf8_encode
только перекодирует ISO-8859-1 в UTF-8, он не коснулся пробелов, поэтому, по моему подозрению, у вас есть неиспользуемые пробелы в ваших фактических данных.
Попробуй это
$str = trim($str, chr(0xC2).chr(0xA0))