2015-04-22 3 views
0

Я вынимаю URL-адрес изображения из таблицы в Wordpress.Конвертировать â € ™ (') для использования в RSS-адресе

URL-адрес в базе данных выглядит следующим образом: Power-behind-F1’s-winning-global-drive.jpg поле UTF8 Unicode

При извлечении его генерировать RSS кормить его выходит как Power-behind-F1’s-winning-global-drive.jpg

я могу преобразовать его в HTML сущности с utf8_encode(htmlentities($url, ENT_QUOTES,'utf-8')), который производит Power-behind-F1’s-winning-global-drive.jpg. Это, однако, не проходит проверку RSS:

enter image description here

Я чувствую, что я перепробовал все комбинации utf8_encode/htmlentities/UrlEncode/mb_convert_encoding и я бежал из идей!

+0

Вопреки распространенному мнению, 'utf8_encode()' не волшебная функция, которая решает проблемы Unicode. Он просто преобразует * из ISO-8859-1 * в UTF-8. Используете ли ваши данные ISO-8859-1? Как вы генерируете RSS точно? (Предположим, вы используете встроенную функцию Wordpress, но не говорите это явно). –

+0

Кодирование поля - Юникод UTF8, я вытаскиваю эти значения из базы данных вручную и перебираю их, чтобы генерировать RSS-канал. Отдельно от Wordpress. – Titan

ответ

0

решаемые до сих пор с

$imageUrl = urlencode($theRawUrl); 
$imageUrl = str_replace(array('%2F', '%5C'), "/", $imageUrl); 
$imageUrl = str_replace("%3A", ":", $imageUrl); 

Гросса, но это работает ...

Edit:

Другое исправление для меня было:

iconv("UTF-8", "ISO-8859-1//IGNORE//TRANSLIT", $content)

0

Поскольку ISN 't код, чтобы видеть, что я могу поделиться только несколькими подсказками.

  • UTF-8 является стандартом де-факто в настоящее время. Устаревшие приложения - единственная причина для использования любой другой кодировки, и похоже, что это не так. Придерживайтесь UTF-8 и не утруждайте себя преобразованием в любую другую кодировку: это бессмысленно, и это может только испортить ваши данные.

  • Экранирование всегда зависит от контекста, а не от универсальной истины. Не применяйте случайные функции экранирования к своим данным до тех пор, пока не появится , если вы не хотите его испортить.

  • Не генерировать XML с конкатенацией строк: он не имеет каких-либо преимуществ и может в конечном итоге генерировать искаженный XML (как это имеет место). Let PHP do the hard work for you. (Используйте SimpleXML, если не уверены.)

Смежные вопросы