php mysql查询结果utf8mb4_bin编码为utf-8,用于html
Mysql表如下所示: 实际内容如下: 我试过这些: 在model.php中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&
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编码
调用导致了问题