Я переместил свой сайт с моего локального тестового сервера на общедоступный хостинг NameCheap, и теперь у меня возникает проблема – некоторые из страниц не отображают специальные символы utf-8 (показывая вопросительные знаки). Все страницы кодируются как utf-8, так и все таблицы базы данных. Странно, что некоторые страницы отображаются правильно, а некоторые – нет, по-видимому, случайным образом.
Например, моя индексная страница прекрасна, но моя страница профиля отсутствует. faq.html отлично работает, но когда я переименовываю его в faq.php, это не так. И самое странное, у меня есть страница с двумя вкладками JQuery, где один отображается правильно, а другой нет!
Может ли кто-нибудь помочь мне с этим?
Это действительно неприятная проблема, но вы можете попробовать это.
Прежде всего, убедитесь, что файл фактически сохранен в формате UTF-8.
Затем проверьте, что в вашем HTML-заголовке есть <meta http-equiv="Content-Type" content="text/html;charset=UTF-8">
.
Вы также можете попробовать вызвать header('Content-Type: text/html; charset=utf-8');
в начале вашего скрипта PHP или добавления AddDefaultCharset UTF-8
в ваш .htaccess файл.
Это звучит так, если вы запрашиваете faq.html
веб-сервер сигнализирует вашему браузеру, что файл находится в кодировке UTF-8.
Убедитесь, что в вашем браузере, о котором объявлено и используется кодировка, обратитесь к документации вашего браузера, как это сделать. Каждый браузер имеет это, чаще всего доступное через меню (для указания ваших предпочтений, которые следует использовать в кодировке сайта), и чтобы увидеть, что сервер вернул, вы часто находите это в свойствах страницы.
Тогда это звучит так, если вы попросите faq.php
на веб-сервере поиграть в браузер, что файл находится в какой-то другой кодировке. Вероятно, кодировка и кодировка не заданы в соответствии с настройкой конфигурации PHP по умолчанию. Поскольку это файл PHP, вы чаще всего решаете это, изменяя директиву Docs по умолчанию: default_charset
:
default_charset = "UTF-8"
Найдите ваш php.ini на хосте и отредактируйте его соответствующим образом.
Если у вас нет доступного php.ini, вы можете изменить это также с помощью функции ini_set
Docs :
ini_set('default_charset', 'UTF-8');
Позаботьтесь о том, чтобы вы изменили это очень рано в своем скрипте, потому что 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"> ...
Надеюсь, это полезно.
установить метатег в голове как
<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);
Его метод я использую и помогаю много. Благодаря!
Если вы используете PHP, и ни одно из вышеперечисленных действий (как это было в моем случае), вам необходимо установить языковой стандарт с помощью кодировки utf-8.
Как это
setlocale(LC_ALL, 'fr_CA.utf-8');
Проблема состоит в том, что ваш файл не с тем же кодированием. Сначала запустите следующую команду во всех ваших файлах:
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
Если все остальные ответы не сработали для вас, попробуйте отключить перевод кодировки ввода HTTP .
Это параметр, связанный с расширением PHP mbstring . Это была проблема в моем случае. Этот параметр был включен по умолчанию на моем сервере.