Вопрос

Я пробовал конвертировать текст в utf8 или из 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 Для получения дополнительных вариантов кодирования.

Другие советы

Убедитесь, что ваш заголовок 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: text/plain; charset=utf-8, потому что эта страница не HTML и использует кодирование UTF-8. Chromium on 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, попробуйте:

  1. Открытым wp-config.php

  2. Закомментировать 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 ('), которых не существует в ISO 8859-1. Анкет Убедитесь, что вы используете Unicode совместим Настройки и функции PHP. Смотрите также мультибит строковые функции.

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

<?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;
?>

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

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

попробуй это :

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

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

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

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

если $text Содержит странные чараторы, делают это:

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

И ты закончил ..

За fopen а также file_put_contents, это будет работать:

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

использовать это

<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);
}

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

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top