Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/57.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
php mysql查询结果utf8mb4_bin编码为utf-8,用于html_Php_Mysql_Encoding_Utf 8 - Fatal编程技术网

php mysql查询结果utf8mb4_bin编码为utf-8,用于html

php mysql查询结果utf8mb4_bin编码为utf-8,用于html,php,mysql,encoding,utf-8,Php,Mysql,Encoding,Utf 8,Mysql表如下所示: 实际内容如下: 我试过这些: 在model.php中 if (mysqli_num_rows($result) > 0) { //iterate while($row = mysqli_fetch_assoc($result)){ //get username $disease = mb_convert_encoding($row['disease'], "UTF-8&

Mysql表如下所示:

实际内容如下:

我试过这些:

在model.php中

 if (mysqli_num_rows($result) > 0) {
        //iterate
        while($row = mysqli_fetch_assoc($result)){
            //get username
            $disease = mb_convert_encoding($row['disease'], "UTF-8", "auto");
            $food = mb_convert_encoding($row['food'], "UTF-8", "auto");
            $en_name = mb_convert_encoding($row['en_name'], "UTF-8", "auto");
            $health_effect = mb_convert_encoding($row['healthEffect'], "UTF-8", "auto");
            $metabollite = mb_convert_encoding($row['metabollite'], "UTF-8", "auto");
            //$citation = $row['citation'];
            $next_row = array("Disease"=>$disease, "Food"=>$food,
                "Name"=>$en_name, "Health Benefits"=>$health_effect, "Metabollite"=>$metabollite);
                //"Sources"=>$citation);
            $matches_arr[] = $next_row;
        }
    }
    $utfArr = array_map("utf8_encode", $matches_arr);//this does not work for associate arrays I think
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />"

回到controller.php,我再试了一次

 //encode in UTF8
 foreach($matches_arr as $col => $val){
 $utf8_val = mb_convert_encoding($val, "UTF-8", "auto");
 $matches_arr[$col] = $utf8_val;
 }
//send it back to view
header('Content-Type: application/json');
$disease_json = json_encode($matches_arr, JSON_UNESCAPED_UNICODE);
echo $disease_json;
但它以日语输出表列的问号:

我看到了: 但我认为我的情况不同,因为mysql数据库已经用
utf8mb4_-bin
编码,而不是晦涩难懂的日文编码

不管怎样,从这个答案我试着把这个标签放在controller.php和model.php的顶部

 if (mysqli_num_rows($result) > 0) {
        //iterate
        while($row = mysqli_fetch_assoc($result)){
            //get username
            $disease = mb_convert_encoding($row['disease'], "UTF-8", "auto");
            $food = mb_convert_encoding($row['food'], "UTF-8", "auto");
            $en_name = mb_convert_encoding($row['en_name'], "UTF-8", "auto");
            $health_effect = mb_convert_encoding($row['healthEffect'], "UTF-8", "auto");
            $metabollite = mb_convert_encoding($row['metabollite'], "UTF-8", "auto");
            //$citation = $row['citation'];
            $next_row = array("Disease"=>$disease, "Food"=>$food,
                "Name"=>$en_name, "Health Benefits"=>$health_effect, "Metabollite"=>$metabollite);
                //"Sources"=>$citation);
            $matches_arr[] = $next_row;
        }
    }
    $utfArr = array_map("utf8_encode", $matches_arr);//this does not work for associate arrays I think
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />"

并检查my view.php是否具有以下字符集:

    <meta charset="utf-8">
    <meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no">
    <meta name="description" content="">
    <meta name="author" content="Mark Otto, Jacob Thornton, and Bootstrap contributors">
    <meta name="generator" content="Jekyll v4.1.1">
    <title>Dashboard Bioactive Compounds</title>
    <!-- boostrap comes first -->
    <link rel="stylesheet" href="css/bootstrap.css">
    <meta charset="utf-8">

生物活性化合物
实际上,它有过两次。
当我检查查询结果变量时,我看到model.php中的查询结果已经只是phpstorm调试器控制台中的问号了。

如何修复此问题以在查看页面上显示日语?

MySQL的
字符集utf8mb4
相当于外部世界的
UTF-8
。因此不需要转换

问号上写着

  • 要存储的字节未编码为utf8/utf8mb4。请修复此问题
  • 数据库中的列不是字符集utf8(或utf8mb4)。请修复此问题。(使用“显示创建表”。)
  • 此外,检查读取期间的连接是否为UTF-8

该链接还提供了一些调试信息

注意,问题可能出在
INSERT
端,这意味着数据丢失。但是,显示似乎表明数据存储正确。可能是冗余的
mb\u convert\u编码
调用导致了问题