如何使用PHP显示Unicode数据

时间:2010-03-15 11:42:56

标签: php mysql unicode

table 'abc' data :

tid    title

  1      வெள்ளிக்கிழமை ஐ.

  2      கோலாகல தொடக்க 


$sql=mysql_query("select title from abd where tid='1'");

$row=mysql_fetch_array($sql);

$title = $row['title'];

echo $title;

OutPut显示如下:

????????????????

但我想显示

வெள்ளிக்கிழமை ஐ.

解决方案

<?php
    mysql_query ("set character_set_results='utf8'");   

    $sql=mysql_query("select title from abd where tid='1'");

    $row=mysql_fetch_array($sql);

    $title = $row['title'];

    echo $title;

?>

7 个答案:

答案 0 :(得分:37)

尝试在mysql_connect函数之后设置字符编码,如下所示:

 mysql_query ("set character_set_client='utf8'"); 
 mysql_query ("set character_set_results='utf8'"); 

 mysql_query ("set collation_connection='utf8_general_ci'"); 

答案 1 :(得分:9)

对于使用mysqli的新版 PHP ,请在连接到mysql后使用此代码:

mysqli_set_charset($link, 'utf8');

答案 2 :(得分:6)

尝试确保浏览器将该页面识别为Unicode。

通常,这可以通过让您的服务器发送正确的Content-type HTTP标头(包括您正在使用的字符集)来完成。


例如,这样的事情应该有效:

header('Content-type: text/html; charset=UTF-8');
echo "வெள்ளிக்கிழமை ஐ";


如果这样做,并且您的动态生成的页面仍然没有:

  • 确保您的MySQL数据库中的数据也是UTF-8
    • 可以在MySQL
    • 中为每个表甚至列设置
  • 并确保使用UTF-8连接到它。

基本上,您的所有应用程序都应使用相同的编码:

  • PHP文件,
  • 数据库
  • HTTP服务器

答案 3 :(得分:3)

执行查询

SET NAMES 'utf8'

连接数据库后立即

答案 4 :(得分:1)

首先,您需要将您的mysql数据格式转换为 utf-8 ,请参阅oreilly的这篇精彩文章:

<强> Turning MySQL data to UTF-8

之后确保您网页的编码类型为 utf-8

<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />

答案 5 :(得分:0)

<?php header('Content-type: text/html; charset=UTF-8');echo "<font face='Bamini' size='5'>" . "m.Nkhfd; Fkhh;" ."<br />";
echo "<font face='Bamini' size='10'>" . "m.Nkhfd; Fkhh;" ."<br />";
?>

or

<?php
header('Content-type: text/html; charset=UTF-8');
echo "வெளà¯à®³à®¿à®•à¯à®•à®¿à®´à®®à¯ˆ à®";
?>

答案 6 :(得分:-1)

使用相关的排序规则(例如,utf8_general_ci用于Unicode字符,即印地语)将数据插入MySQL数据库时。还在使用PHP预定义功能utf8_decode来显示HTML中的字符。