Подтвердить что ты не робот

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

Я переместил свой веб-сайт с моего локального тестового сервера на общедоступный хостинг NameCheap, и теперь у меня возникает проблема - на некоторых страницах не отображаются специальные символы utf-8 (показывая вопросительные знаки). Все страницы кодируются как utf-8, так и все таблицы базы данных. Странная вещь, некоторые страницы отображаются правильно, а некоторые нет, в кажущейся случайной схеме.

Например, моя индексная страница прекрасна, но моя страница профиля отсутствует. faq.html отлично работает, но когда я переименовываю его в faq.php, это не так. И самое странное, у меня есть страница с двумя вкладками JQuery, где один отображается правильно, а другой нет!

Может кто-нибудь помочь мне с этим?

4b9b3361

Ответ 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">