将UTF-8编码的JSON从DB解析为JS

Parse UTF-8 encoded JSON from DB into JS

本文关键字:JS DB UTF-8 编码 JSON      更新时间:2023-09-26

我的数据库中有以下列,使用UTF-8编码的字母:

  • chineseWords

    ǎnǐh o

console.log(value)给出:null


如果我将它们更改为非UTF-8,

  • chineseWords

    你好

console.log(value)给出:ni hao


如果我只留下一个字

  • chineseWords

console.log(value)给出:n?


jQuery:

function getData (functionToRun) {  
    $.getJSON("phpscripts.php", {"_functionToRun" : functionToRun},
        function (returned_data) {                      
            var value = returned_data.chineseWords;         
            console.log(value);
        }
    );
}
PHP:

$qry = 
    'SELECT * 
    FROM tasks
    WHERE npc_id_fk = 1';
$result = $mysqli->query($qry) or die(mysqli_error($mysqli));
while ($row = $result->fetch_assoc()) {
    echo json_encode($row);
}   

为什么浏览器会输出nulln? ?


编辑:遵循这篇关于编码和解码UTF-8的博客,我尝试了:

console.log(decodeURIComponent(value));//输出:n?


EDIT 2:

连接:

<?php 
$mysqli = new mysqli("localhost", "root", "", "my_db");
if ($mysqli->connect_errno) {
    echo "Failed to connect to MySQL: (Error code: " . $mysqli->connect_errno . ")... " . $mysqli->connect_error;
}
?>

我的phpscripts.php文件开始:

<?php
include 'runDB.php';
mysql_set_charset($mysqli, "utf8");

index . php:

<!DOCTYPE html>
<html>
    <head>
        <title>Playground</title>
        <meta charset="UTF-8">

在你的HTML Header中添加:

<meta charset="UTF-8">

在你的PHP Mysql调用添加:

mysql_set_charset('utf8',$connectToDBVar);

在db mysql_connect之后,但在查询之前