Utf-8 специальных символов, не отображающих
Я переместил свой веб-сайт с моего локального тестового сервера на общедоступный хостинг NameCheap, и теперь у меня возникает проблема - на некоторых страницах не отображаются специальные символы utf-8 (показывая вопросительные знаки). Все страницы кодируются как utf-8, так и все таблицы базы данных. Странная вещь, некоторые страницы отображаются правильно, а некоторые нет, в кажущейся случайной схеме.
Например, моя индексная страница прекрасна, но моя страница профиля отсутствует. faq.html отлично работает, но когда я переименовываю его в faq.php, это не так. И самое странное, у меня есть страница с двумя вкладками JQuery, где один отображается правильно, а другой нет!
Может кто-нибудь помочь мне с этим?
Ответы
Ответ 1
Это действительно раздражает проблему, но вы можете попробовать.
Прежде всего, убедитесь, что файл действительно сохранен в формате UTF-8.
Затем проверьте, что у вас есть <meta http-equiv="Content-Type" content="text/html;charset=UTF-8">
в заголовке HTML.
Вы также можете попробовать позвонить header('Content-Type: text/html; charset=utf-8');
в начале вашего PHP скрипт или добавить AddDefaultCharset UTF-8
в ваш .htaccess файл.
Ответ 2
Звучит так, если вы запрашиваете faq.html
, веб-сервер сигнализирует вашему браузеру, что файл находится в кодировке UTF-8.
Убедитесь, что в вашем браузере, о котором объявлено и используется кодировка, обратитесь к документации вашего браузера, как это сделать. Каждый браузер имеет это, чаще всего доступное через меню (чтобы указать ваши предпочтения, какие кодировки веб-сайта должны использоваться), и чтобы увидеть, что сервер вернул, вы часто находите это в свойствах страницы.
Тогда это звучит так, если вы запросите faq.php
, веб-сервер поет в браузере, что файл находится в какой-то другой кодировке. Вероятно, кодировка и кодировка не заданы в соответствии с настройкой конфигурации PHP по умолчанию. Поскольку это файл PHP, вы чаще всего можете решить это, изменив конфигурацию PHP default_charset
Docs директива:
default_charset = "UTF-8"
Найдите ваш php.ini на хосте и отредактируйте его соответствующим образом.
Если у вас нет доступного php.ini, вы также можете изменить это по коду, используя ini_set
Docs:
ini_set('default_charset', 'UTF-8');
Позаботьтесь о том, чтобы вы изменили это очень рано в своем script, потому что PHP должен иметь возможность отправлять заголовки, чтобы это работало, а заголовки не могут быть установлены больше, если они уже были отправлены.
Вручную отправляет строку заголовка Content-Type
тоже:
header('Content-Type: text/html; charset=UTF-8');
Кроме того, хорошая практика заключается в том, что все HTML-страницы, которые вы выводили, имеют этот заголовок также в разделе HTML <head>
:
<html>
<head>
...
<meta http-equiv="Content-Type" content="text/html;charset=UTF-8">
...
Надеюсь, что это будет полезно.
Ответ 3
установить метатег в голове как
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1" />
используйте ссылку http://www.i18nqa.com/debug/utf8-debug.html, чтобы заменить символ символов, который вы хотите.
затем используйте str_replace, например
$find = array('“', '’', '…', 'â€"', 'â€"', '‘', 'é', 'Â', '•', 'Ëœ', 'â€'); // en dash
$replace = array('"', '’', '…', '—', '–', '‘', 'é', '', '•', '˜', '"');
$content = str_replace($find, $replace, $content);
Его метод, который я использую и помогаю много. Спасибо!
Ответ 4
Если вы используете PHP и ни одно из вышеописанных действий (как это было в моем случае), вам нужно установить языковой стандарт с помощью кодировки utf-8.
Подобно этому
setlocale(LC_ALL, 'fr_CA.utf-8');
Ответ 5
Я решаю свою проблему с помощью utf8_encode();
$ str = "kamé";
echo utf8_encode ($ str);
Надеюсь, это поможет кому-то.
Ответ 6
Если все остальные ответы не сработали для вас, попробуйте отключить перевод кодировки ввода HTTP.
Это параметр, связанный с расширением PHP mbstring.
Это была проблема в моем случае. Этот параметр был включен по умолчанию на моем сервере.
Ответ 7
Проблема заключается в том, что ваш файл не с тем же кодированием.
Сначала запустите следующую команду во всех ваших файлах:
file -i filename.*
Чтобы исправить проблему, вы должны изменить все свои файлы на uft-8. Вы можете сделать это с помощью команды iconv:
iconv -f fromcode -t tocode filename > newfilename
Пример:
iconv -f iso-8859-1 -t utf-8 index.html > fixed/index.html
После этого вы можете запустить файл -i fixedx/index.html, и вы увидите, что ваш файл теперь находится в uft-8
Ответ 8
Добавление следующей строки в заголовок тега исправило мою проблему.
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">