Странные символы появляются после того, как я использую php's mb_substr () в строке - PullRequest
0 голосов
/ 09 ноября 2011

Я занимаюсь разработкой веб-сайта на PHP (5.3.5, Ubuntu), и весь контент написан на испанском языке. Я хотел бы вырезать текст, когда он не помещается в отведенное для этого место. У меня есть следующий метатег в файле php, где я хочу сделать это: <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />.

Текст взят из базы данных MySQL, где charset - latin1 и сопоставление latin1_spanish_ci . Я пытаюсь вырезать текст с помощью функции mb_substr (). Но это не работает правильно. Например, скажем, я хочу вырезать Short Psicodélico до Short Psicodéli , функция будет выглядеть так:

mb_substr('Short Psicodélico', 0, 15, 'ISO-8859-1');

Но результат примерно такой: Short Psicod & ea . Е с диакритическим знаком преобразуется в & ea , и я не знаю почему. Я думаю, что это как-то связано с кодировкой символов, но я точно не знаю как. Если я не использую эту функцию, символы отображаются так, как должны, вместо Short Psicod & ea он показывает Short Psicodélico .

1 Ответ

2 голосов
/ 09 ноября 2011

Текст в базе данных кодируется как "Short Psicod&eacute;lico". Вам нужно будет очистить базу данных, чтобы удалить кодировку, а также исправить введенные подпрограммы, чтобы убедиться, что текст не сохраняется в закодированной базе данных.

...