In the "PHP Cookbook", they say (p.589) that to properly set the character encoding of outgoing data to UTF-8, it is necessary to edit the default_encoding configuration to utf-8.
However, I cannot find this configuration in file php.ini. Should I simply add a line that would say default_encoding = "utf-8"
?
I do have a ;default_charset = "iso-8859-1". As you can see (;
), right now it is not activated. Should I remove the semicolon and set it to "utf-8"
? Does that take care of the default encoding?
I also found other encoding directives that I don't know what to do about:
[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
Is there any reason why I shouldn't simply replace them all with utf-8
?
You should set your default_charset
to UTF-8:
default_charset = "utf-8"
(PHP Cookbook may have a typo in it if they ask you to change the default_encoding
— I've never heard of it.)
You'll also want to make sure that your web server is set to output UTF-8 if you're going to outputting UTF-8 encoded characters. In Apache, this can be set by in the httpd.conf file:
AddDefaultCharset UTF-8
As for modifying the iconv
, exif
, and mssql
encoding settings, you probably don't need to set these (your settings have these commented out anyhow), but it's a good idea to change them all to UTF-8 anyhow.