PHP, MySQL and UTF-8? [message #175372] |
Mon, 12 September 2011 16:46 |
Robert Latest
Messages: 1 Registered: September 2011
Karma: 0
|
Junior Member |
|
|
Hello all,
I have UTF-8 characters in my database. They're there, I can see them in
a MySQL dump as well as in phpmyadmin.
When I retrieve this data from the db and output it via print(), all I get
is question marks. These come from the server because I see them also in
wget's output.
In phpmyadmin I see the correct characters in my db. When I insert them
literally in my HTML they come out as expected. When I print() them as string
literals in php, they come out correctly as well.
I think I'm opening the db correctly:
$c = new PDO("mysql:host=$host;dbname=$dbname;port=$port;charset=UTF-8",
$user, $pass);
So ... how do I retrieve UTF-8 chars from a database?
Thanks
robert
|
|
|
Re: PHP, MySQL and UTF-8? [message #175373 is a reply to message #175372] |
Mon, 12 September 2011 19:30 |
Jerry Stuckle
Messages: 2598 Registered: September 2010
Karma: 0
|
Senior Member |
|
|
On 9/12/2011 12:46 PM, Robert Latest wrote:
> Hello all,
>
> I have UTF-8 characters in my database. They're there, I can see them in
> a MySQL dump as well as in phpmyadmin.
>
> When I retrieve this data from the db and output it via print(), all I get
> is question marks. These come from the server because I see them also in
> wget's output.
>
> In phpmyadmin I see the correct characters in my db. When I insert them
> literally in my HTML they come out as expected. When I print() them as string
> literals in php, they come out correctly as well.
>
> I think I'm opening the db correctly:
>
> $c = new PDO("mysql:host=$host;dbname=$dbname;port=$port;charset=UTF-8",
> $user, $pass);
>
> So ... how do I retrieve UTF-8 chars from a database?
>
> Thanks
>
> robert
What version of PHP are you using?
--
==================
Remove the "x" from my email address
Jerry Stuckle
JDS Computer Training Corp.
jstucklex(at)attglobal(dot)net
==================
|
|
|
|
Re: PHP, MySQL and UTF-8? [message #175375 is a reply to message #175374] |
Mon, 12 September 2011 20:27 |
A
Messages: 17 Registered: June 2011
Karma: 0
|
Junior Member |
|
|
1. Your <head> must have this:
<head>
<meta http-equiv="content-type" content="text/html; charset=utf-8" />
</head>
2. If you load from template file and then print, your template file must be
saved in UTF-8 (I'm not sure if BOM must be present, try with or without
it) - UTF8 BOM is 0xEF 0xBB 0xBF - http://unicode.org/faq/utf_bom.html#bom1
3. Execute these queries before querying database rows (only once is
needed):
SET CHARACTER SET utf8;
SET NAMES utf8;
4. After the two above you should be able to retrieve them properly and
print them as the should be.
Does that help?
|
|
|
Re: PHP, MySQL and UTF-8? [message #175381 is a reply to message #175372] |
Tue, 13 September 2011 14:53 |
Thomas 'PointedEars'
Messages: 701 Registered: October 2010
Karma: 0
|
Senior Member |
|
|
Robert Latest wrote:
> I have UTF-8 characters in my database. They're there, I can see them in
> a MySQL dump as well as in phpmyadmin.
>
> When I retrieve this data from the db and output it via print(), all I get
> is question marks. These come from the server because I see them also in
> wget's output.
As for the wget output, your console might not be UTF-8-compliant, or you
might not have declared the proper character encoding for the HTTP resource
and the resource type (e. g., HTML) requires you to escape them then, which
you also failed to do.
> In phpmyadmin I see the correct characters in my db. When I insert them
> literally in my HTML they come out as expected. When I print() them as
> string literals in php, they come out correctly as well.
This and
> I think I'm opening the db correctly:
>
> $c = new PDO("mysql:host=$host;dbname=$dbname;port=$port;charset=UTF-8",
> $user, $pass);
suggests that the Content-Type header field of the HTTP response for your
Web site has the wrong value. And I think that is a FAQ.
PointedEars
--
Danny Goodman's books are out of date and teach practices that are
positively harmful for cross-browser scripting.
-- Richard Cornford, cljs, <cife6q$253$1$8300dec7(at)news(dot)demon(dot)co(dot)uk> (2004)
|
|
|