PHP utf8_encode () преобразует пробелы в неразрывные пробелы - PullRequest
6 голосов
/ 17 августа 2011

Совершенно просто: utf8_encode ($ string) заменяет обычные пробелы неразрывными пробелами ("\ u00a0"). Я попытался отфильтровать результат с помощью str_replace:

str_replace("\u00a0", " ", utf8_encode($string))

Но это не исправило это.

РЕДАКТИРОВАТЬ: вздох, я идиот. Это не проблема с utf8_encode (). Я думал, что использую эту функцию, забыл, что отключил ее в своем коде. Мои данные проходят через json_encode () для запроса AJAX. Это проблема с json_encode ()? Я волнуюсь, что могу быть виновным в злоупотреблении переполнением стека. Я попробую поискать его в Google.

ЗАКЛЮЧИТЕЛЬНОЕ РЕДАКТИРОВАНИЕ: Проблема была с самими данными, которые были скопированы из документа Word в таблицу MySQL. Все пробелы были скопированы как неразрывные пробелы. Извините за трату времени всех.

Ответы [ 2 ]

12 голосов
/ 17 августа 2011

str_replace ("\ u00a0", "", utf8_encode ($ dat)).Но это не исправило это.

PHP имеет только байтовые строки, а не нативные строки Unicode;следовательно, \u escape не существует, и вы просили его буквально преобразовать последовательности обратной косой черты-буквы-u во входные данные.

Чтобы избавиться от неразрывных пробелов, вам придется заменить \xA0(если сделано поверх данных ISO-8859-1, которые вы, вероятно, имеете до передачи в utf8_encode) или \xC2\xA0 (если сделано после перекодирования в UTF-8).

utf8_encode транскодирует только ISO-От 8859-1 до UTF-8, он не касается пробелов, поэтому я подозреваю, что в ваших реальных данных есть неразрывные пробелы.

0 голосов
/ 18 декабря 2014

Попробуйте это

$str = trim($str, chr(0xC2).chr(0xA0))
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...