如何使用PHP显示Unicode数据

22
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;

输出结果如下:

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

但我想展示

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

解决方案

<?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;

?>

漂亮的字符!特别是ஐ。 - Pekka
如果这是PHP代码,请勿使用旧的mysql_* API;切换到更新(更安全)的mysqli_*PDO - Rick James
请参见以下链接中的“问号”:https://dev59.com/WFoT5IYBdhLWcg3wnQn9 - Rick James
7个回答

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
@JeffDavis 它们是不同的,你需要使用全部三个。 - antyrat
1
@KasunSiyambalapitiya 试试这个:mysqli_set_charset($link,'utf8'); - antyrat
如果您要使用从select语句获取的字段更新一个字段,请在执行select查询后执行上述配置。 - namal

10

对于使用mysqli的新版本PHP,在连接到MySQL之后使用此代码:

mysqli_set_charset($link, 'utf8');

你是我的英雄兄弟! - Mustafa Erdogan

7

请确保浏览器将页面识别为Unicode编码。

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


例如,像这样的内容应该可以工作:

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

如果这样仍然无法正常工作,请检查你的动态生成页面:
  • 确保你的MySQL数据库中的数据也是UTF-8编码
    • 可以在MySQL中为每个表甚至每个列设置此选项
  • 同时确保用UTF-8连接它。

基本上,你的应用程序应该使用相同的编码方式:

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

我不得不结合你的答案和antyrat的答案才能使它工作。 - mili

3

执行查询

SET NAMES 'utf8'

连接到数据库后立即执行


0

首先,您需要将MySQL数据格式转换为utf-8,请参阅O'Reilly的这篇优秀文章:

.

将MySQL数据转换为UTF-8

.

之后请确保你的页面编码类型为 utf-8:

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

@Srinivas Tamada:你选择的最终答案与我在上面发布的Oreily文章中提到的方法是一样的。无论如何,很高兴你找到了解决方案。谢谢。 - Sarfraz
链接已失效,因此答案不应该是链接。 - NateS

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 "வெளà¯à®³à®¿à®•à¯à®•à®¿à®´à®®à¯ˆ à®";
?>

-1

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


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接