FUDforum
Fast Uncompromising Discussions. FUDforum will get your users talking.

Home » Imported messages » comp.lang.php » PHP, MySQL and UTF-8?
Show: Today's Messages :: Polls :: Message Navigator
Switch to threaded view of this topic Create a new topic Submit Reply
PHP, MySQL and UTF-8? [message #175372] Mon, 12 September 2011 16:46 Go to next message
Robert Latest is currently offline  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 Go to previous messageGo to next message
Jerry Stuckle is currently offline  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 #175374 is a reply to message #175372] Mon, 12 September 2011 19:31 Go to previous messageGo to next message
Peter H. Coffin is currently offline  Peter H. Coffin
Messages: 245
Registered: September 2010
Karma: 0
Senior Member
No Message Body
Re: PHP, MySQL and UTF-8? [message #175375 is a reply to message #175374] Mon, 12 September 2011 20:27 Go to previous messageGo to next message
A is currently offline  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 Go to previous message
Thomas 'PointedEars'  is currently offline  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)
  Switch to threaded view of this topic Create a new topic Submit Reply
Previous Topic: Re: Startup City 2011 (September 24th,Mumbai)
Next Topic: Social Bookmarks Script
Goto Forum:
  

-=] Back to Top [=-
[ Syndicate this forum (XML) ] [ RSS ]

Current Time: Mon Nov 25 22:09:20 GMT 2024

Total time taken to generate the page: 0.02290 seconds