Подтвердить что ты не робот

Получение "вместо апострофа" (") в PHP

Я попытался преобразовать текст в/из utf8, который, похоже, не помог.

Я получаю:

"It’s Getting the Best of Me"

Это должно быть:

"It’s Getting the Best of Me"

Я получаю эти данные из этого URL.

4b9b3361

Ответ 1

Для преобразования в объекты 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.

Ответ 2

Убедитесь, что ваш html-заголовок указывает utf8

<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />

Это обычно делает трюк для меня (очевидно, если содержимое IS utf8).

Вам не нужно преобразовывать объекты html, если вы задаете тип содержимого.

Ответ 3

Ваше содержание в порядке; проблема связана с заголовками, отправленными сервером:

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 on Mac угадывает ISO-8859-1 и отображает символы, которые вы описываете.

Если вы не контролируете сайт, укажите кодировку как UTF-8 для любой функции, которую вы используете для извлечения содержимого. Я недостаточно знаком с PHP, чтобы точно знать, как именно.

Ответ 4

Я знаю, что на вопрос был дан ответ, но установка метатега не помогла в моем случае, и выбранный ответ был недостаточно ясным, поэтому я хотел дать более простой ответ.

Итак, чтобы это было просто, сохраните строку в переменной и обработайте ее, как это

$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');

Ответ 5

Если вы здесь, потому что у вас проблемы с нежелательными символами на вашем сайте 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', '');
    

Ответ 6

Похоже, вы используете стандартные строковые функции для символов UTF8(), которых нет в ISO 8859-1. Убедитесь, что вы используете Unicode compatible Настройки и функции PHP. См. Также функции multibyte.

Ответ 7

если все, похоже, не работает, это может быть вашим лучшим решением.

<?php
$content="It’s Getting the Best of Me";
$content = str_replace("’", "&#39;", $content);
echo $content;
?>

== или ==

<?php
$content="It’s Getting the Best of Me";
$content = str_replace("’", "'", $content);
echo $content;
?>

Ответ 8

Я посмотрел ссылку, и мне кажется UTF-8. то есть в Firefox, если вы выберете View, кодировку символов, UTF-8, она появится правильно.

Итак, вам просто нужно выяснить, как заставить ваш PHP-код обрабатывать это как UTF-8. Удачи!

Ответ 9

попробуйте следующее:

html_entity_decode(mb_convert_encoding(stripslashes($text), "HTML-ENTITIES", 'UTF-8'))

Ответ 10

У нас был успех в другом направлении, используя это:

mb_convert_encoding($text, "HTML-ENTITIES", "ISO-8859-1");

Ответ 11

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

Если $text содержит странные символы, сделайте следующее:

$mytext = mb_convert_encoding($text, "HTML-ENTITIES", 'UTF-8');

и все готово.

Ответ 12

Для fopen и file_put_contents это будет работать:

str_replace("&rsquo;", "'", htmlspecialchars_decode(mb_convert_encoding($string_to_be_fixed, "HTML-ENTITIES", "UTF-8")));

Ответ 13

используйте этот

<meta http-equiv="Content-Type" content="text/html; charset=utf8_unicode_ci" />

вместо этого

<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />

Ответ 14

Вы должны проверить источник кодирования, а затем попытаться преобразовать код в правильный тип.

В моем случае я читаю 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);
}

После конвертации я помещаю содержимое в файл, затем обрабатываю импорт в БД, теперь он хорошо отображается в интерфейсе.