【问题标题】:How to display Unicode data with PHP [duplicate]如何使用 PHP 显示 Unicode 数据 [重复]
【发布时间】:2011-01-27 15:42:56
【问题描述】:
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;

?>

【问题讨论】:

  • 美丽的人物!尤其是ஐ。
  • 如果这是 PHP 代码,请不要使用旧的mysql_* API;切换到更新(更安全)的mysqli_*PDO

标签: php mysql unicode


【解决方案1】:

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

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

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

【讨论】:

  • @JeffDavis 它们是不同的,你需要使用所有 3 个
  • @KasunSiyambalapitiya 试试这个:mysqli_set_charset($link, 'utf8');
  • 如果您要使用从 select 语句中获取的更新字段,请在执行 select 查询后执行上述配置。
【解决方案2】:

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

mysqli_set_charset($link, 'utf8');

【讨论】:

  • 你是我的英雄兄弟!
【解决方案3】:

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

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


例如,这样的事情应该可以工作:

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


如果这有效,并且您的动态生成的页面仍然无效:

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

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

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

【讨论】:

  • 我必须结合你的答案和antyrat的答案才能让它发挥作用
【解决方案4】:

执行查询

SET NAMES 'utf8'

连接数据库后

【讨论】:

    【解决方案5】:

    首先你需要将你的mysql数据格式转换成utf-8,看看oreilly的这篇很棒的文章:

    .

    Turning MySQL data to UTF-8

    .

    然后确保您的页面的编码类型是 utf-8

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

    【讨论】:

    • @Srinivas Tamada:您选择的最终答案与我在上面发布链接的原始文章中所说的相同。无论如何,找到解决方案是件好事。谢谢..
    • 链接已失效,这就是为什么答案不应该是链接。
    【解决方案6】:
    <?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 "வெளà¯à®³à®¿à®•à¯à®•ிழமை à®";
    ?>
    

    【讨论】:

      【解决方案7】:

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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2012-10-28
        • 2019-10-08
        • 2015-06-21
        • 2021-02-22
        • 2019-11-15
        • 2015-06-15
        • 1970-01-01
        • 2019-10-12
        相关资源
        最近更新 更多