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