sasori
sasori

Reputation: 5463

How to properly display Chinese characters in PHP?

I have these Chinese characters:

汉字/漢字''test

If I do

echo utf8_encode($chinesevar);

it displays

??/??''test

Or even if I just do a simple

echo $chinesevar

it still displays some weird characters...

So how am I going to display these Chinese characters without using the <meta> tag with the UTF-8 thingy .. or the ini_set UTF-8 thing or even the header() thing with UTF-8?

Upvotes: 13

Views: 37347

Answers (5)

karrtojal
karrtojal

Reputation: 886

$chinesevarOK = mb_convert_encoding($chinesevar, 'HTML-ENTITIES', 'UTF-8');

Upvotes: 3

unigg
unigg

Reputation: 464

save your source code in UTF-8 No BOM

Upvotes: 0

Stephan
Stephan

Reputation: 91

Perhaps take a look at the following solutions:

  1. Your database, table and field COLLATE should be utf8_unicode_ci
  2. Check if your records are showing the correct characters within the database...
  3. Set your html to utf8

  4. Add the following line to your php after connecting to the database

    mysqli_set_charset($con,"utf8");

http://www.w3schools.com/php/func_mysqli_set_charset.asp

Upvotes: 0

Ren&#233; H&#246;hle
Ren&#233; H&#246;hle

Reputation: 27325

Look that your file is in UTF8 without BOM and that your webserver deliver your site in UTF-8

HTML:

<meta http-equiv="content-type" content="text/html; charset=UTF-8" />

in PHP:

header('Content-Type: text/html; charset=utf-8');

And if you work with a database look that your database is in UTF-8 if you read the text from your database.

Upvotes: 2

deceze
deceze

Reputation: 522606

Simple:

  1. save your source code in UTF-8
  2. output an HTTP header to specify to your browser that it should interpret the page using UTF-8:

    header('Content-Type: text/html; charset=utf-8');
    

Done.

utf8_encode is for converting Latin-1 encoded strings to UTF-8. You don't need it.

For more details, see Handling Unicode Front To Back In A Web App.

Upvotes: 16

Related Questions