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
?
PHP | utf8_encode() FunctionThe utf8_encode() function is an inbuilt function in PHP which is used to encode an ISO-8859-1 string to UTF-8. Unicode has been developed to describe all possible characters of all languages and includes a lot of symbols with one unique number for each symbol/character.
There is a character encoding setting inside of your php. ini file. By default, this is set to the standard Latin encoding (ISO-8859).
To change the character set encoding to UTF-8 for the database itself, type the following command at the mysql> prompt. Replace dbname with the database name: Copy ALTER DATABASE dbname CHARACTER SET utf8 COLLATE utf8_general_ci; To exit the mysql program, type \q at the mysql> prompt.
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.
Modify the line
;default_charset = "iso-8859-1"
to read
default_charset = "utf-8"
About the other options, do not touch them. Avoid default settings, always explicitly set the encoding of in everything you do
Also, beware of the encoding in which your PHP files are saved, make sure that they are in UTF-8, especially if they contain strings to be displayed or compared.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With