フロントエンドでコミットされた中国語データがバックエンド・データベースと正しく一致しない問題


フロントエンドでコミットされた中国語データがバックエンド・データベースと正しく一致しない問題
フロントエンドのGETメソッドを使用して、入力ボックスの中国語データをバックエンドに送信します.
    $("#SearchButton").click(function(){

        ajax("GET", "php/workerSearch.php?name=" + $("#SearchText").val());

      })

バックエンドは、取得したデータをMysqlデータベースに照会し、そのユーザがいれば、その情報を取り出してフロントエンドに返します.
<?php if(isset($_GET["SearchText"])) { header("Content-type: text; charset=gbk"); $link = mysqli_connect("localhost", "root", "123", "test"); mysqli_query($link, "set names gbk"); $searchText = trim($_GET["SearchText"]); $sql = "SELECT number, tele FROM worker WHERE name = '$searchText'"; $rs_sql = mysqli_query($link, $sql); if($rs = mysqli_fetch_array($rs_sql)) { $data = array( "number" => $rs["number"], "tele" => $rs["tele"], ); $json_data = json_encode($data); echo $json_data; } else { echo ""; } ?>

問題は、入力した中国語データが確かにデータベースに存在しても、データベースは一致エラーを返します.データ「明ちゃん」をコミットし、$sql変数をチェックして一致を発見した場合の内容は以下の通りです.
SELECT number, tele FROM worker WHERE name = ‘小明’
問題は符号化にある.
フロントエンドhtmlページはutf-8符号化フォーマットを使用しています
    <meta charset="utf-8">

ブラウザがutf-8符号化でページを解析して表示すべきであることを意味します.
バックエンドでデータベースを呼び出すと符号化フォーマットがgbkに設定されます
 mysqli_query($link, "set names gbk");

それはデータベースがgbk符号化で私が伝えたデータを解析すべきであることを意味し、utf-8で提出された「明ちゃん」がデータベースにgbkで解釈されてマッチングされ、外国人が「pen」を買って中国の店のボスに「鉢」を買うように聞かれたように、もちろんマッチングできない問題が発生する.解決策は、エンコーディングを変更することです.
// mysqli_query($link, "set names gbk"); mysqli_query($link, "set names utf8");