Получение ' вместо апострофа(') в PHP
-
21-09-2019 - |
Вопрос
Я пробовал конвертировать текст в 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, попробуйте:
Открытым
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 ('), которых не существует в ISO 8859-1. Анкет Убедитесь, что вы используете Unicode совместим Настройки и функции PHP. Смотрите также мультибит строковые функции.
Если все, кажется, не работает, это может быть вашим лучшим решением.
<?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'))
Мы добились успеха в другом направлении, используя это:
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("’", "'", 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);
}
После конвертации я помещаю содержимое в файл, затем обрабатываю импорт в БД, теперь он хорошо отображается во внешнем интерфейсе.