Problems with mysql, php and utf8
I want to show some data that I have on a DB.
When I connect with the terminal client, when I do a select, I get exactly the data I expected AND when I check with one sniffer, I see that the data that is being transfered on the wire is exactly that data in UTF8. Cool.
However, when I try to do the same from PHP, I just don't get the render some of the characters correctly. I have tried setting the client encoding with these (with different combinations and each one separate):
Any idea what's going on?
It's PHP5 on Ubuntu Intrepid.
I would guess that PHP is not handling the UTF8 conversion correctly. Check the documentation on mbstrings and change the ini file as directed by that chapter. You may get some success then.
I'll check... but then how come the data is coming _not_ in utf8 on the wire? That's not related to PHP, or is it?
I have the same problem
In fact, I also tested PHP5 with UTF-8 static data, and it displays alright after setting the header with charset utf-8, or setting the default charset to utf-8.
MySQL client displays the data just the way it is supposed to. I have enable three other options in my.cnf, but to no help.
init-connect='SET NAMES utf8'
Could you get it working? Please share the info if you did.
What are the mbstring settings in php.ini
Here are the values. I am using Ubuntu Hardy Heron.
Multibyte Support enabled
Multibyte string engine libmbfl
HTTP input encoding translation enabled
Multibyte (japanese) regex support enabled
Multibyte regex (oniguruma) version 4.4.4
Multibyte regex (oniguruma) backtrack check On
Directive Local Value Master Value
mbstring.detect_order no value no value
mbstring.encoding_translation On On
mbstring.func_overload 0 0
mbstring.http_input pass pass
mbstring.http_output UTF-8 UTF-8
mbstring.internal_encoding UTF-8 UTF-8
mbstring.language neutral neutral
mbstring.strict_detection Off Off
mbstring.substitute_character no value no value
The key settings are (I believe)
taken from a web server that I have running.
You may want to modify your settings to be in line with these and then check.
If that doesn't help then how are you getting the data off the database and then displaying it on the screen?
Thanks for the prompt reply. I use mysql_connect to connect to the local database, the usual way. The data displays correct in the mysql terminal client, just PHP is either not receiving the correct data, or is messing it up. How do I trace this behavior?
Chck with one sniffer what's being transfered through the wire. Maybe you will see the same error I saw on the wire transfer.
|All times are GMT -5. The time now is 09:31 AM.|