ProgrammingThis forum is for all programming questions.
The question does not have to be directly related to Linux and any language is fair game.
Notices
Welcome to LinuxQuestions.org, a friendly and active Linux Community.
You are currently viewing LQ as a guest. By joining our community you will have the ability to post topics, receive our newsletter, use the advanced search, subscribe to threads and access many other special features. Registration is quick, simple and absolutely free. Join our community today!
Note that registered members see fewer ads, and ContentLink is completely disabled once you log in.
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):
When I check with the sniffer, no matter what I do, I never get the same bytes on the wire (onr on the script result, by the way). For instance "ó" would be sent as 0xc3 0xb3 to the terminal (as expected), but when I do that on php, this is sent to the client instead: 0xc3 0x83 0xc2 0xb3
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.
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.
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
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?
LinuxQuestions.org is looking for people interested in writing
Editorials, Articles, Reviews, and more. If you'd like to contribute
content, let us know.