【问题标题】:PHP - Displaying Urdu text retrieved from MySQL DBPHP - 显示从 MySQL DB 检索到的乌尔都语文本
【发布时间】:2012-07-01 08:00:40
【问题描述】:

MySQL 数据库中存储有乌尔都语的书名。我必须使用 PHP 在 html 页面上显示。

目前仅显示问号 (??????) 代替乌尔都语文本。

<div class='product_title'><a href='details.php?pid=".$Row['s_id']."'>".$Row["books"]."</a></div>

需要做什么才能正确显示这些字符?

【问题讨论】:

标签: php mysql database functional-programming


【解决方案1】:

步骤:1 - 转到表结构并将排序规则 latin1_swedish_ci 更改为 utf8_general_ci

步骤:2 - 您必须在数据结果页面中包含以下标签。

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

第 3 步 - 插入“N”前缀。这里的 N 代表国家语言字符集。这意味着您正在传递 NCHAR、NVARCHAR 或 NTEXT 值,more

步骤:4 - PHP 代码显示记录表单数据库。在此之前您必须指定 mysql_query() 函数数据字符集类型

<?php
include('db.php');
mysql_query ("set character_set_results='utf8'"); 
$query = mysql_query("SELECT * FROM books") or die(mysql_error());
while($row=mysql_fetch_array($query))
{
echo $row['id']; // Book id 
echo $row['books_title']; // Book title
}
?>

【讨论】:

    【解决方案2】:

    另外你的文件编码必须是 utf-8 没有 BOM

    【讨论】:

    • 这应该在 cmets 部分。
    【解决方案3】:

    我遇到了同样的问题,通过操作整个 PHP-MySQL 环境的字符编码解决了。

    默认情况下PHPMyAdmin中的字符集编码一般是拉丁语瑞典语或utf8一般,但是字符集编码不支持乌尔都语、中文等其他语言,所以你需要更改你的MySQL数据库的字符编码或表或列根据您的要求。

    # For each database:
    ALTER DATABASE database_name CHARACTER SET = utf8mb4 COLLATE = utf8mb4_general_ci;
    # For each table:
    ALTER TABLE table_name CONVERT TO CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci;
    # For each column:
    ALTER TABLE table_name CHANGE column_name column_name VARCHAR(191) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci;
    # (Don’t blindly copy-paste this! The exact statement depends on the column type, maximum length, and other properties. The above line is just an example for a `VARCHAR` column.)
    

    您还需要为使​​用 mysqli_query 检索的数据设置字符编码。您可以使用连接线下方的 mysqli_charset() 函数来实现。喜欢...

     // Create connection
    $conn = mysqli_connect($servername, $username, $password, $dbname);
    
    /* change character set to utf8mb4 */
    mysqli_set_charset($conn,"utf8mb4");
    

    现在您可以通过 PHP Query 从 MySQL 数据库中检索来直接显示乌尔都语或任何其他语言。

    【讨论】:

      【解决方案4】:

      我遇到了这个问题,我通过将它们转换为 UTF-8 解决了这个错误。

      ALTER TABLE test_Table_name CONVERT TO CHARACTER SET utf8 COLLATE utf8_general_ci;
      
      ALTER TABLE test_Table_name DEFAULT CHARACTER SET utf8 COLLATE utf8_general_ci;
      
      ALTER TABLE test_Table_name CHANGE title title VARCHAR(100) CHARACTER SET utf8 COLLATE utf8_general_ci;
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2020-01-12
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多