Я прочитал несколько других вопросов, попробовал ответы, но не получил результата в конце. То, что я получаю, например, это
Μήπως θα έπρεπε να ...
и я не могу удалить этот странный вопросительный знак. То, что я делаю, – это получить содержимое RSS-канала, которое также кодируется с помощью <?xml version="1.0" encoding="UTF-8"?>
Используя греческий язык для контента.
Есть ли способ исправить это?
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> <div><?php $entry->description = strip_tags($entry->description); echo mb_substr($entry->description, 0, 490); ?> ...</div>
Это ответ
mb_substr($entry->description, 0, 490, "UTF-8");
Я считаю, что проблема связана с вашей кодировкой. Вывод UTF-8, но ваш браузер не может интерпретировать один из символов. Символ вопросительного знака, как я его знал в прошлом, фактически генерируется браузером, поэтому нет поиска и замены … он касается исправления вашей кодировки или устранения неизвестных символов из строки перед ее выводом …
Если у вас есть доступ к источнику данных, вы можете проверить настройки БД, чтобы убедиться, что он закодирован правильно … если нет, тогда вам придется найти способ конвертировать данные с помощью php … not легкая задача …
Может быть:
mb_convert_encoding($string, "UTF-8");
Вы пытались использовать эти, казалось бы, избыточные многобайтовые безопасные строковые функции, которые не находятся в ядре php?
http://code.google.com/p/mbfunctions/
Похоже, они предлагают функцию mb_strip_tags (), такую как:
if (! function_exists('mb_strip_tags')) { function mb_strip_tags($document,$repl = ''){ $search = array('@<script[^>]*?>.*?</script>@si', // Strip out javascript '@<[\/\!]*?[^<>]*?>@si', // Strip out HTML tags '@<style[^>]*?>.*?</style>@siU', // Strip style tags properly '@<![\s\S]*?--[ \t\n\r]*>@' // Strip multi-line comments including CDATA ); $text = mb_preg_replace($search, $repl, $document); return $text; } }