【问题标题】:retrieving data in Indian language from MySql database using php shows unusual character set使用 php 从 MySql 数据库中检索印度语言数据显示异常字符集
【发布时间】:2017-12-07 11:27:14
【问题描述】:

我正在检索印度语言的数据,我得到的输出是 ???????????????????????????

注意:-我在我的 php 脚本中使用了这 2 行

header('Content-type: text/plain; charset=utf-8');
mysqli_set_charset($conn,'utf-8');

我还在数据库和表格中使用了 utf8_general_ci 编码。

我的 php 脚本是

<?php

require 'init.php';

header('Content-type: text/plain; charset=utf-8');
mysqli_set_charset($conn,'utf-8');

$table = $_GET['table_name'];

$sql = "SELECT * FROM ".$table;

$response = array();

$result = mysqli_query($conn,$sql);

if(mysqli_num_rows($result)>0) {
        while($row = mysqli_fetch_array($result)) {
        array_push($response, array('id'=>$row['id'],'text'=>$row['text']));
    }
    echo json_encode($response);
} else {
    echo "error";
}

mysqli_close($conn);

?>

您可以查看链接http://www.sharefb.com/statusApp/readStatus.php?table_name=gujrati_attitude

【问题讨论】:

  • 警告:在编写查询时不要使用字符串插值或连接来完成此操作,因为您创建了一个严重的SQL injection bug切勿$_POST$_GET任何用户数据直接放入查询中,如果有人试图利用您的错误,这可能会非常有害。您必须根据已知良好值列表测试该表名,否则您很容易受到攻击、错误或更糟的影响。

标签: php android mysql utf-8


【解决方案1】:

使用 mysqli_set_charset($db, 'utf8');

【讨论】:

  • 我也用过这个……但没用……你看不到问题描述吗?请在回答之前仔细阅读问题。
【解决方案2】:

在标题中添加此元标记并尝试

<META HTTP-EQUIV="Content-Type" CONTENT="text/html"; charset="utf-8" />

注意:如果结果显示为 ????那么您可能需要通过启用以下选项来安装外部语言支持工具,

控制面板 -> 区域和语言选项 -> 语言 -> 为复杂的脚本和从右到左的语言(包括泰语)安装文件。

【讨论】:

  • 我已经添加了上面的行。我应该在哪里安装外部语言支持?在数据库中?
【解决方案3】:

Trouble with utf8 characters; what I see is not what I stored中的“问号”

如果仍有问题,请提供

显示创建表
正在插入的文本示例
SELECT HEX(...) 坏数据样本 (? = 3F)

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2012-06-19
    • 1970-01-01
    • 2015-06-30
    • 2011-07-15
    • 1970-01-01
    • 1970-01-01
    • 2012-10-04
    • 1970-01-01
    相关资源
    最近更新 更多