Problems with mysql, php and utf8
Hi!
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): Code:
mysql_set_charset('utf8', $LINK); 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' character-set-server=utf8 collation-server=utf8_general_ci Could you get it working? Please share the info if you did. Thanks |
What are the mbstring settings in php.ini
|
Here are the values. I am using Ubuntu Hardy Heron.
mbstring 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)
mbstring.http_input UTF-8 mbstring.internal_encoding UTF-8 mbstring.http_output UTF-8 mbstring.detect_order auto 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 04:22 PM. |