Intereting Posts
Учитывая, что письмо является сырым текстом, как я могу его отправить с помощью PHP? Как избежать навигации по папкам с помощью манипуляции URL PHP – проблема производительности и памяти с глобальными переменными Используя DOMDocument, можно ли получить все элементы, которые существуют в пределах определенной DOM? Может ли php cron задавать доступ к переменным сеанса / файлам cookie? API SugarCRM REST, как получить Контакты, связанные с учетной записью Как переименовать столбец в laravel с помощью миграции? Документация PHP GraphViz Хотя magic_quotes отключены, все еще избегают строк? DOMXPath получает родного брата в зависимости от предыдущего значения брата Зачем использовать bin2hex при вставке двоичных данных из PHP в MySQL? Как я могу обновить две таблицы в одном запросе? удалить целую строку после x mins в mysql db и PHP Проблема синтаксиса PHP и SQL как получить данные json из запроса на отправку iphone

utf-8 специальных символов, не отображающих

Я переместил свой сайт с моего локального тестового сервера на общедоступный хостинг 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 . Это была проблема в моем случае. Этот параметр был включен по умолчанию на моем сервере.