上面的是我資料庫存的資料,採用的utf8_bin編碼,開始的時候用的是utf8_unicode_ci,可是還是不行
下面是我的PHP代碼
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": 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" } ]}
為什麼中文顯示的是問號呢?我要的Unicode編碼的就好了
回複內容:
上面的是我資料庫存的資料,採用的utf8_bin編碼,開始的時候用的是utf8_unicode_ci,可是還是不行
下面是我的PHP代碼
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": 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" } ]}
為什麼中文顯示的是問號呢?我要的Unicode編碼的就好了
if (function_exists('mysql_set_charset') === false) { mysql_query("SET NAMES UTF8",$data);}else{ mysql_set_charset('utf8',$data);}
這一段應該放在mysql_query之前,另外這兩個地方的第二個參數也不應該是$data,而應該是$connect
我之前也遇到過這個問題,加了個這個後就好了mysqli_query($conn,"SET NAMES utf8");
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); }}
中文的urlencode 這個編碼問題,我遇到的,不能直接進行解碼。不然會出現亂碼的。我使用的方式是。
單獨編碼。然後在解碼,` /**
* [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)));
if (function_exists('mysql_set_charset') === false) { mysql_query("SET NAMES UTF8",$data);}else{ mysql_set_charset('utf8',$data);}
這一句應該放在遍曆資料之前吧