Настройка кодировки PHP по умолчанию для utf-8?
Все,
В "Поварной книге PHP" они говорят (стр .589), что для правильной установки кодировки исходящих данных char в utf-8 необходимо отредактировать конфигурацию default_encoding
до utf-8.
Однако я не могу найти эту конфигурацию в php.ini
. Должен ли я просто добавить строку, которая скажет default_encoding = "utf-8"
?
У меня есть ;default_charset = "iso-8859-1"
. Как вы можете видеть (;
), прямо сейчас он не активируется. Должен ли я удалить полуточку и установить ее на "utf-8"
? Заботится ли о кодировке по умолчанию?
Я также нашел другие директивы кодирования, о которых я не знаю, что делать:
[iconv]
;iconv.input_encoding = ISO-8859-1
;iconv.internal_encoding = ISO-8859-1
;iconv.output_encoding = ISO-8859-1
...
; http://php.net/exif.encode-unicode
;exif.encode_unicode = ISO-8859-15
...
;mssql.charset = "ISO-8859-1"
...
;exif.encode_unicode = ISO-8859-15
Есть ли причина, по которой я не должен просто заменять их все utf-8
?
Ответы
Ответ 1
Вы должны установить default_charset
в UTF-8:
default_charset = "utf-8"
(PHP Cookbook может иметь опечатку, если они попросят вас изменить default_encoding
- я никогда не слышал об этом.)
Вы также захотите убедиться, что ваш веб-сервер настроен на вывод UTF-8, если вы собираетесь выводить символы кодировки UTF-8. В Apache это можно установить в файле httpd.conf:
AddDefaultCharset UTF-8
Что касается изменения настроек кодировки iconv
, exif
и mssql
, вам, вероятно, не нужно их устанавливать (ваши настройки все равно прокомментированы), но это хорошая идея, чтобы изменить их все на UTF-8 в любом случае.
Ответ 2
Измените строку
;default_charset = "iso-8859-1"
читать
default_charset = "utf-8"
О других параметрах, не трогайте их. Избегайте настроек по умолчанию, всегда явно устанавливайте кодировку во всем, что вы делаете
- подключения к базе данных,
- чтение и запись файлов,
- конвертирование с iconv.
Кроме того, остерегайтесь кодировки, в которой сохраняются ваши файлы PHP, убедитесь, что они находятся в UTF-8, особенно если они содержат строки, которые нужно отображать или сравнивать.
Ответ 3
У меня возникла проблема с моим запросом mysql, чтобы он не распознал некоторую латинскую acentuation, поэтому запрос потерпит неудачу. Я думал, что это может быть файл php и т.д., Пока я не узнал, что с помощью pdo для вызова mysql мне пришлось добавить кодировку. Странно то, что предыдущий сервер, который я использовал, работал нормально!
$dsn = 'mysql:host=localhost;dbname=retirodo_main;charset=utf8';
- - - - - - - - - - - - - - - - - - - - - - - - - ^^^^^^^^^^^^
Ответ 4
Чтобы решить, я изменил "UTF-8" на "UTF-8" (без тире), решив проблему.
CentOS
Исайяс Мура
Ответ 5
На уровне htaccess (файл .htaccess) директива php должна быть php_value default_charset UTF-8
Ответ 6
изменяется от * default_charset = "utf-8" * до * default_charset = "iso-8859-1" * работает для меня (я использую веб-сервер Apache и ОС Linux). по некоторым причинам, когда я использую utf-8, некоторые символы не отображаются хорошо. Они либо меняются на квадратный знак, либо знак вопроса в зависимости от используемого веб-браузера.