Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

How to properly display Chinese characters in PHP?

Tags:

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?

like image 793
sasori Avatar asked Nov 21 '12 15:11

sasori


People also ask

Can you have Chinese characters in URL?

Baidu is the most popular search engine in China. The Chinese language can pose a problem with URLs as Chinese characters are not recommended for URL structures. Search engines and browsers support the characters, but they can often be displayed as encoded characters, much like accented letters.

How many characters does Chinese use?

How many characters are there? Altogether there are over 50,000 characters, though a comprehensive modern dictionary will rarely list over 20,000 in use. An educated Chinese person will know about 8,000 characters, but you will only need about 2-3,000 to be able to read a newspaper.


3 Answers

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

like image 165
karrtojal Avatar answered Oct 19 '22 20:10

karrtojal


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.

like image 30
deceze Avatar answered Oct 19 '22 21:10

deceze


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.

like image 22
René Höhle Avatar answered Oct 19 '22 20:10

René Höhle