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 ... ; //php.net/exif.encode-unicode ;exif.encode_unicode = ISO-8859-15 ... ;mssql.charset = "ISO-8859-1" ... ;exif.encode_unicode = ISO-8859-15Is there any reason why I shouldn't simply replace them all with utf-8?
asked Feb 19, 2012 at 18:02
1
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-8As 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.
answered Feb 19, 2012 at 18:38
Ben DBen D
13.8k3 gold badges44 silver badges59 bronze badges
6
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
- database connections,
- reading and writing files,
- converting with iconv.
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.
answered Feb 19, 2012 at 18:36
gioelegioele
9,1615 gold badges52 silver badges77 bronze badges
I had a problem on my MySQL query that it would not recognize some Latin accentuation, so the query would fail. I thought it could be the PHP file and so on, till I found out that using PDO to call the MySQL function I had to add the character set. The weird thing is that on the previous server I used it worked fine!
$dsn = 'mysql:host=localhost;dbname=retirodo_main;charset=utf8'; - - - - - - - - - - - - - - - - - - - - - - - - - ^^^^^^^^^^^^
answered Oct 29, 2013 at 23:31
MiguelMiguel
3,0532 gold badges29 silver badges28 bronze badges
2
At the htaccess level (.htaccess file), the PHP directive should be php_value default_charset UTF-8.
answered Nov 11, 2017 at 20:45
ontananzaontananza
3124 silver badges6 bronze badges
To resolve it, I changed "UTF-8" to "UTF-8" (without the dash), solving the problem instead.
It was on CentOS.
answered Nov 30, 2016 at 17:44
1