Das Obige sind die Daten in meinem Datenbestand unter Verwendung der utf8_bin-Kodierung. Am Anfang habe ich utf8_unicode_ci verwendet, aber es hat immer noch nicht funktioniert.
Das Folgende ist mein PHP-Code.
<code><?php header('Content-Type:application/json;charset=utf-8'); //定义常量参数 define('DB_HOST','localhost'); define('DB_USER','root'); define('DB_PWD','root');//密码 define('DB_NAME','Test'); $connect = mysql_connect( DB_HOST, DB_USER, DB_PWD )or die('数据库连接失败:'.mysql_error()); mysql_select_db(DB_NAME,$connect) or die('数据库连接错误,错误信息:'.mysql_error()); //从数据库里把表的数据提出来(获取记录集) $query = "SELECT * FROM gc_DataBase"; $result = mysql_query($query) or die('SQL错误,错误信息:'.mysql_error()); class User { public $id ; public $name ; public $address; public $phonenumber; } $data =array(); while ($row= mysql_fetch_array($result, MYSQL_ASSOC)){ $user = new User(); $user -> id = $row["id"]; $user -> name = $row["name"]; $user -> address = $row["address"]; $user -> phonenumber = $row["phonenumber"]; $data[] = $user; } if (function_exists('mysql_set_charset') === false) { mysql_query("SET NAMES UTF8",$data); }else{ mysql_set_charset('utf8',$data); } $response = array( 'code' => 200, 'message' => 'success for request', 'data' => $data, ); echo urldecode(json_encode($response)); mysql_free_result($response); //释放 mysql_close();//关闭数据库 ?> </code>
Das Letzte, was im Browser angezeigt wird, ist dieser Urin
<code>{ "code": 200, "message": "success for request", "data": [ { "id": "100", "name": "??", "address": "????", "phonenumber": "13212340001" }, { "id": "101", "name": "??", "address": "????", "phonenumber": "13512340002" }, { "id": "100", "name": "??", "address": "????", "phonenumber": "13212340001" }, { "id": "101", "name": "??", "address": "????", "phonenumber": "13512340002" }, { "id": "0", "name": "", "address": "", "phonenumber": "0" }, { "id": "103", "name": "??", "address": "????", "phonenumber": "13512340005" }, { "id": "103", "name": "??", "address": "????", "phonenumber": "13512340005" } ] } </code>
Warum wird das Fragezeichen auf Chinesisch angezeigt? Ich möchte nur die Unicode-Kodierung
Das Obige sind die Daten in meinem Datenbestand unter Verwendung der utf8_bin-Kodierung. Am Anfang habe ich utf8_unicode_ci verwendet, aber es hat immer noch nicht funktioniert.
Das Folgende ist mein PHP-Code.
<code><?php header('Content-Type:application/json;charset=utf-8'); //定义常量参数 define('DB_HOST','localhost'); define('DB_USER','root'); define('DB_PWD','root');//密码 define('DB_NAME','Test'); $connect = mysql_connect( DB_HOST, DB_USER, DB_PWD )or die('数据库连接失败:'.mysql_error()); mysql_select_db(DB_NAME,$connect) or die('数据库连接错误,错误信息:'.mysql_error()); //从数据库里把表的数据提出来(获取记录集) $query = "SELECT * FROM gc_DataBase"; $result = mysql_query($query) or die('SQL错误,错误信息:'.mysql_error()); class User { public $id ; public $name ; public $address; public $phonenumber; } $data =array(); while ($row= mysql_fetch_array($result, MYSQL_ASSOC)){ $user = new User(); $user -> id = $row["id"]; $user -> name = $row["name"]; $user -> address = $row["address"]; $user -> phonenumber = $row["phonenumber"]; $data[] = $user; } if (function_exists('mysql_set_charset') === false) { mysql_query("SET NAMES UTF8",$data); }else{ mysql_set_charset('utf8',$data); } $response = array( 'code' => 200, 'message' => 'success for request', 'data' => $data, ); echo urldecode(json_encode($response)); mysql_free_result($response); //释放 mysql_close();//关闭数据库 ?> </code>
Das Letzte, was im Browser angezeigt wird, ist dieser Urin
<code>{ "code": 200, "message": "success for request", "data": [ { "id": "100", "name": "??", "address": "????", "phonenumber": "13212340001" }, { "id": "101", "name": "??", "address": "????", "phonenumber": "13512340002" }, { "id": "100", "name": "??", "address": "????", "phonenumber": "13212340001" }, { "id": "101", "name": "??", "address": "????", "phonenumber": "13512340002" }, { "id": "0", "name": "", "address": "", "phonenumber": "0" }, { "id": "103", "name": "??", "address": "????", "phonenumber": "13512340005" }, { "id": "103", "name": "??", "address": "????", "phonenumber": "13512340005" } ] } </code>
Warum wird das Fragezeichen auf Chinesisch angezeigt? Ich möchte nur die Unicode-Kodierung
<code>if (function_exists('mysql_set_charset') === false) { mysql_query("SET NAMES UTF8",$data); }else{ mysql_set_charset('utf8',$data); }</code>
Dieser Absatz sollte vor mysql_query
stehen. Außerdem sollte der zweite Parameter an diesen beiden Stellen nicht $data
sein, sondern $connect
Ich bin schon einmal auf dieses Problem gestoßen und nach dem Hinzufügen mysqli_query($conn,"SET NAMES utf8");
<code>class DBHelper{ public function DBHelper(){} private static function getConn(){ $conn = mysqli_connect(DB_HOST,DB_USER,DB_PWD,DB_NAME); mysqli_query($conn,"SET NAMES utf8"); return $conn; } public static function opearting($sql){ return mysqli_query(self::getConn(),$sql); } }</code>
Das Problem mit der Kodierung des chinesischen URL-Codes, auf das ich gestoßen bin, kann nicht direkt dekodiert werden. Andernfalls werden verstümmelte Zeichen angezeigt. Die Art und Weise, wie ich es benutze, ist.
Individuell kodiert. Dann Dekodierung: ` /**
<code> * [ReturnUrlencode 用递归的方式来遍历所有的数组并且解析] * @param [type] $arr [description] */ function ReturnUrlencode($arr){ foreach ($arr as $key => $value){ if(is_array($value)){ $arr[$key]=ReturnUrlencode($value); }else{ $arr[$key]=urlencode($value); } } return $arr; }` ##这种方式,输出来的json 中文就不会乱码了。 urldecode(json_encode(ReturnUrlencode($arr)));</code>
<code class="php">if (function_exists('mysql_set_charset') === false) { mysql_query("SET NAMES UTF8",$data); }else{ mysql_set_charset('utf8',$data); }</code>
Dieser Satz sollte vor dem Durchlaufen der Daten platziert werden