Как изменить кодировку по умолчанию на UTF-8 для Apache?
Я использую хостинговую компанию, и она будет перечислять файлы в каталоге, если файл index.html
там нет, он использует iso-8859-1 в качестве кодировки по умолчанию.
Если сервер Apache, есть ли способ установить вместо него UTF-8 по умолчанию?
Обновление: Кроме того, я обнаружил, что он на самом деле использует DOCTYPE HTML 3.2, и тогда вообще нет кодировки... поэтому он не устанавливает никакой кодировки. Но есть ли способ изменить его на использование UTF-8?
11 ответов
В httpd.conf добавьте (или измените, если он уже есть):
AddDefaultCharset utf-8
Добавьте это к вашему .htaccess
:
IndexOptions +Charset=UTF-8
Или, если у вас есть права администратора, вы можете установить его глобально, отредактировав httpd.conf
и добавление:
AddDefaultCharset UTF-8
(Ты можешь использовать AddDefaultCharset
в .htaccess
тоже, но это не повлияет на сгенерированные Apache списки каталогов таким образом.)
См. Директиву AddDefaultCharset, Директиву AddCharset и эту статью.
AddDefaultCharset utf-8
Но я должен использовать китайские иероглифы время от времени. Ранее я перевел китайские символы в код Unicode и включил их в документ, используя
&#
хак. Но это полезно только для страницы, имеющей несколько символов.Есть лучший способ сделать это: закодировать информацию о кодировке в имени файла, и apache выведет соответствующий заголовок кодирования на основе этого. Это возможно благодаря
AddCharset
строки в файле conf, такие как строка ниже:
conf/httpd.conf
:
AddCharset UTF-8 .utf8
Так что если у вас есть файл, имена которого заканчиваются на
.html.utf8
, apache будет обслуживать страницу так, как если бы она была закодирована в UTF-8, и соответственно выгружает в заголовок соответствующую директиву кодировки символов.
В.htaccess добавьте эту строку:
AddCharset utf-8 .html .css .php .txt .js
Это для тех, у кого нет доступа к файлу conf их сервера. Это просто еще одна попытка, когда другие попытки не увенчались успехом.
Что касается проблем производительности, связанных с использованием.htaccess, я не видел этого. Мое типичное время загрузки страницы составляет 150-200 мс с или без.htaccess
Что хорошего в производительности, если ваша страница не отображается правильно. Большинство общих серверов не разрешают пользователю доступ к файлу конфигурации, который является предпочтительным местом для добавления набора символов.
Место AddDefaultCharset UTF-8
в /etc/apache2/conf.d/charset
, На самом деле, это уже там. Вы просто должны раскомментировать его, удалив предыдущие #
,
Для полноты, в Apache2 в Ubuntu вы найдете набор символов по умолчанию в charset.conf в файле conf-available.
Раскомментируйте строку
AddDefaultCharset UTF-8
Это не проверено, но, вероятно, будет работать.
В вашем.htaccess файле положите:
<Files ~ "\.html?$">
Header set Content-Type "text/html; charset=utf-8"
</Files>
Однако для этого потребуются mod_headers на сервере.
Я не уверен, есть ли у вас доступ к конфигурации Apache (httpd.conf), но вы должны быть в состоянии установить директиву AddDefaultCharset. Увидеть:
http://httpd.apache.org/docs/2.0/mod/core.html
Найдите модуль mod_mime.c и убедитесь, что установлено следующее:
AddDefaultCharset utf-8
или эквивалентные документы Apache 1.x ( http://httpd.apache.org/docs/1.3/mod/core.html).
Однако это работает только тогда, когда "тип содержимого ответа - text / plain или text / html".
Вы также должны убедиться, что на ваших страницах также есть набор символов. Смотрите это для получения дополнительной информации:
Просто подсказка, если у вас длинные имена файлов в utf-8: по умолчанию они будут сокращены до 20 байтов, поэтому может случиться, что последний символ будет "разрезан пополам" и, следовательно, не распознан должным образом. Тогда вы можете установить следующее:
IndexOptions Charset=UTF-8 NameWidth=*
NameWidth
настройка не позволит сократить ваши имена файлов, делая их правильно отображаемыми и читаемыми.
Как уже упоминали другие пользователи, это следует добавить либо в httpd.conf
или же apache2.conf
(если у вас есть права администратора) или в .htaccess
(если вы этого не сделаете).
Там, где все файлы HTML находятся в UTF-8 и не имеют мета-тегов для типа контента, я смог установить необходимые значения по умолчанию для этих файлов, отправляемых Apache 2.4, добавив обе директивы:
AddLanguage ru .html
AddCharset UTF-8 .html
Просто оставьте это пустым: 'default_charset' in WHM :::::: default_charset =''
PS - В WHM перейдите --------) Главная "Конфигурация службы" Редактор конфигурации PHP ----) нажмите "Расширенный режим" ----) найдите "default_charset" и оставьте это поле пустым ---- просто ничего, не utf8, не ISO
отменяет кодировку apache по умолчанию (cf /etc/apache2/conf.d/charset)
Если этого недостаточно, то вы, вероятно, создали свой исходный файл с набором символов кодировки iso-8859-1. Вы должны преобразовать его в правильный набор символов:
iconv -f ISO-8859-1 -t UTF-8 source_file.php -o new file.php
В моем случае добавить в.htaccess
AddDefaultCharset off
AddDefaultCharset windows-1252