Настройка кодировки PHP по умолчанию для utf-8?

Все,

В «Поварной книге PHP» они говорят (стр.589), что для правильной установки кодировки символов исходящих данных в 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 ?

Вы должны установить свой 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 , вам, вероятно, не нужно их устанавливать (ваши настройки все равно прокомментированы), но это все mssql , чтобы изменить их все на UTF-8.

Изменить строку

 ;default_charset = "iso-8859-1" 

читать

 default_charset = "utf-8" 

О других вариантах не трогайте их. Избегайте настроек по умолчанию, всегда явно устанавливайте кодировку во всем, что вы делаете

  • подключения к базе данных,
  • чтение и запись файлов,
  • конвертирование с iconv.

Кроме того, остерегайтесь кодирования, в котором сохраняются ваши файлы PHP, убедитесь, что они находятся в UTF-8, особенно если они содержат строки, которые будут отображаться или сравниваться.

У меня возникла проблема с моим запросом mysql, чтобы он не распознал некоторые латинские настройки, поэтому запрос не удался. Я думал, что это может быть файл php и т. Д., Пока я не узнал, что с помощью pdo для вызова mysql мне пришлось добавить кодировку. Странно то, что предыдущий сервер, который я использовал, работал отлично!

 $dsn = 'mysql:host=localhost;dbname=retirodo_main;charset=utf8'; - - - - - - - - - - - - - - - - - - - - - - - - - ^^^^^^^^^^^^ 

Для решения я изменил «UTF-8» на «UTF-8» (без тире), решив проблему вместо этого.

CentOS

Исайяс Мура

На уровне htaccess (файл .htaccess) директива php должна быть php_value default_charset UTF-8

изменение от * default_charset = "utf-8" * до * default_charset = "iso-8859-1" * работает для меня (я использую веб-сервер Apache и ОС Linux). по некоторым причинам, когда я использую utf-8, некоторые символы не отображаются хорошо. Они либо меняются на квадратный знак, либо знак вопроса в зависимости от используемого веб-браузера.