gpt4 book ai didi

php - utf8_unicode_ci 的 JSON 数据的 PHP header 中的内容类型字符集 - Ajax 调用

转载 作者:行者123 更新时间:2023-11-29 05:13:40 27 4
gpt4 key购买 nike

我正在使用 utf8_unicode_ci 作为 MYSQL 表中的一个列来存储泰米尔语字符。

我正在实现一个 AngularJS 项目,因为我正在调用 PHP 服务,返回类型是 JSON 数据。我无法获得实际的字符,而我得到的是 ????????

我的 PHP 示例源代码:

<?php

header("Access-Control-Allow-Origin: *");
header("Content-Type: application/json; charset=UTF-8");

$outp = "";

$sql_select = "";
$sql_select .= "SELECT * FROM poll_quest WHERE qid = $nqid LIMIT 1 ";
$bQuery = mysql_query($sql_select, $link);
while ($bRow = mysql_fetch_array($bQuery)) {

$qflag = true;

$outp .= '{ "ID": ' . $bRow['qid'] . ',';
$outp .= '"Ans":"' . $bRow['ans_tam'] . '" }';
}

$outp ='{"records":['.$outp.']}';
echo($outp);

?>

我的泰米尔语是

  • மோசம்
  • மோசமாகஇல்லை
  • நன்று
  • மிகநன்று

MySQL 表结构快照:

enter image description here

MySQL 表数据快照:

enter image description here

输出 JSON 数据快照:

enter image description here

{
"records":[
{
"ID":"1",
"Ans":"??. ????????"
},
{
"ID":"2",
"Ans":"??. ?????????"
},
........
{
"ID":"5",
"Ans":"??. ??????????"
}
]
}

请帮助我,如何获取响应 JSON 中的实际字符...

最佳答案

首先,MySQL 驱动程序即 mysql_* 已被弃用,取而代之的是 PDO 或 MySQLi。话虽如此,让我们继续前进。

你需要在连接上设置字符集的答案,即你需要执行以下操作才能使其工作 -

<?php
...
$link = mysqli_connect(...);
mysql_set_charset('utf8', $link); // This is your answer
...

为了将来引用,我已经修改了上面的代码以使用 MySQLi 来帮助你一点点 -

<?php
// NOTE : I prefer using PDO but I have used mysqli for this example
// NOTE : The following code HAS NOT BEEN TESTED!

header('Content-Type: application/json; charset=UTF-8');

// Connection information
$link = new mysqli($host, $user, $password, $dbname);

$link->set_charset('utf8'); // This is important or mysql_set_charset('utf8', $link) if you insist on using mysql_*

// Check connection
if (mysqli_connect_errno()) {
printf('Connect failed: %s\n', mysqli_connect_error());

exit();
}

$outp = '';

// Always use prepared statements!!
if ($stmt = $link->prepare('SELECT qid, ans_tam FROM poll_quest WHERE qid = ? LIMIT 1')) {
$stmt->bind_param('i', $nqid); // user 's' if this is a string for the first parameter

$stmt->execute();

$stmt->bind_result($qid, $ans_tam);

while ($stmt->fetch()) {
$qflag = true;

$outp .= '{ "ID" : ' . $qid . ', "Ans" : "' . $ans_tam . '" }';
}

$stmt->close();
}

echo('{"records":[' . $outp . ']}');

关于php - utf8_unicode_ci 的 JSON 数据的 PHP header 中的内容类型字符集 - Ajax 调用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36097362/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com