Я пытался преобразовать текст в utf8 или из него, но это не помогло.
Я собираюсь:
"It’s Getting the Best of Me"
Так должно быть:
"It’s Getting the Best of Me"
Я получаю эти данные с этого URL.
Я пытался преобразовать текст в utf8 или из него, но это не помогло.
Я собираюсь:
"It’s Getting the Best of Me"
Так должно быть:
"It’s Getting the Best of Me"
Я получаю эти данные с этого URL.
Чтобы преобразовать в объекты HTML:
<?php
echo mb_convert_encoding(
file_get_contents('http://www.tvrage.com/quickinfo.php?show=Surviver&ep=20x02&exact=0'),
"HTML-ENTITIES",
"UTF-8"
);
?>
См. документы для mb_convert_encoding для получения дополнительных вариантов кодирования.
mb_convert_encoding()
. например, $text = fgets($fp); $html = mb_convert_encoding($text, "HTML-ENTITIES", "UTF-8");
- person Matthew; 19.02.2010
Убедитесь, что ваш заголовок html указывает utf8
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
Обычно это помогает мне (очевидно, если содержимое UTF8).
Вам не нужно преобразовывать в объекты html, если вы установите тип содержимого.
Ваш контент в порядке; проблема с заголовками, которые отправляет сервер:
Connection:Keep-Alive
Content-Length:502
Content-Type:text/html
Date:Thu, 18 Feb 2010 20:45:32 GMT
Keep-Alive:timeout=1, max=25
Server:Apache/2.2.8 (Ubuntu) PHP/5.2.4-2ubuntu5.7 with Suhosin-Patch
X-Powered-By:PHP/5.2.4-2ubuntu5.7
Content-Type должен быть установлен в Content-type: text/plain; charset=utf-8
, потому что эта страница не является HTML и использует кодировку utf-8. Chromium на Mac угадывает ISO-8859-1 и отображает символы, которые вы описываете.
Если вы не контролируете сайт, укажите кодировку UTF-8 для любой функции, которую вы используете для извлечения содержимого. Я недостаточно знаком с PHP, чтобы знать, как именно.
Я знаю, что на вопрос был дан ответ, но установка метатега в моем случае не помогла, и выбранный ответ был недостаточно ясен, поэтому я хотел дать более простой ответ.
Итак, чтобы упростить задачу, сохраните строку в переменной и обработайте ее следующим образом.
$TVrageGiberish = "It’s Getting the Best of Me";
$notGiberish = mb_convert_encoding($TVrageGiberish, "HTML-ENTITIES", 'UTF-8');
echo $notGiberish;
Который должен вернуть то, что вы хотели It’s Getting the Best of Me
Если вы что-то анализируете, вы можете выполнить преобразование, присваивая значения переменной, подобной этой, где $TVrage
— это массив со всеми значениями, XML в этом примере из фида с тегом «Заголовок», который может содержать специальные символы, такие как ‘
или ’
.
$cleanedTitle = mb_convert_encoding($TVrage->title, "HTML-ENTITIES", 'UTF-8');
Если вы здесь, потому что у вас возникли проблемы с нежелательными символами на вашем сайте WordPress, попробуйте следующее:
Открыть wp-config.php
Закомментируйте define('DB_CHARSET', 'utf8')
и define('DB_COLLATE', '')
/** MySQL hostname */
define('DB_HOST', 'localhost');
/** Database Charset to use in creating database tables. */
//define('DB_CHARSET', 'utf8');
/** The Database Collate type. Don't change this if in doubt. */
//define('DB_COLLATE', '');
Похоже, вы используете стандартные строковые функции для символов UTF8 ('), которых нет в ИСО 8859-1. Убедитесь, что вы используете совместимые с Unicode настройки и функции PHP. См. также многобайтовые строковые функции.
У нас был успех в другом направлении, используя это:
mb_convert_encoding($text, "HTML-ENTITIES", "ISO-8859-1");
Просто попробуйте это
если $text
содержит странные символы, сделайте это:
$mytext = mb_convert_encoding($text, "HTML-ENTITIES", 'UTF-8');
и вы закончили..
если кажется, что все не работает, это может быть вашим лучшим решением.
<?php
$content="It’s Getting the Best of Me";
$content = str_replace("’", "'", $content);
echo $content;
?>
==или==
<?php
$content="It’s Getting the Best of Me";
$content = str_replace("’", "'", $content);
echo $content;
?>
Я посмотрел ссылку, и мне кажется, что это UTF-8. т. е. в Firefox, если вы выберете «Вид», «Кодировка символов», «UTF-8», он будет отображаться правильно.
Итак, вам просто нужно выяснить, как заставить ваш PHP-код обрабатывать это как UTF-8. Удачи!
попробуй это :
html_entity_decode(mb_convert_encoding(stripslashes($text), "HTML-ENTITIES", 'UTF-8'))
Для fopen
и file_put_contents
это будет работать:
str_replace("’", "'", htmlspecialchars_decode(mb_convert_encoding($string_to_be_fixed, "HTML-ENTITIES", "UTF-8")));
Если ни одно из вышеперечисленных решений не работает:
В моем случае я заметил, что одинарная кавычка была другим стилем одинарной кавычки. Вместо «у меня были данные». Заметили разницу в одинарной кавычке? Поэтому я просто написал str_replace, чтобы заменить его, и это решило проблему. Вероятно, не самое элегантное решение, но оно выполнило свою работу.
$string= str_replace("’","'",$string);
использовать это
<meta http-equiv="Content-Type" content="text/html; charset=utf8_unicode_ci" />
вместо этого
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
Вы должны проверить источник кодирования кодирования, а затем попытаться преобразовать его в правильный тип кодирования.
В моем случае я читаю CSV-файлы, а затем импортирую их в БД. Некоторые файлы отображаются хорошо, некоторые нет. Я проверяю кодировку и вижу, что файл с кодировкой ASCII отображается хорошо, другой файл с кодировкой UTF-8 битый. Поэтому я использую следующий код для преобразования кодировки:
if(mb_detect_encoding($content) == 'UTF-8') {
$content = iconv("UTF-8", "ASCII//TRANSLIT", $content);
file_put_contents($file_path, $content);
} else {
$content = mb_convert_encoding($content, 'UTF-8', 'UTF-8');
file_put_contents($file_path, $content);
}
После преобразования я помещаю содержимое в файл, затем обрабатываю импорт в БД, теперь оно хорошо отображается во внешнем интерфейсе.
Если ничего не работает, попробуйте mb_convert_encoding($elem-›textContent, 'UTF-8', 'utf8mb4');