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

Настройка кодировки 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?

4b9b3361

Ответ 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, некоторые символы не отображаются хорошо. Они либо меняются на квадратный знак, либо знак вопроса в зависимости от используемого веб-браузера.