立即学习“PHP免费学习笔记(深入)”;
上面的是我数据库存的数据,采用的utf8_bin编码,开始的时候用的是utf8_unicode_ci,可是还是不行
下面是我的PHP代码
<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>最后在浏览器显示的是这个尿性
<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>为什么中文显示的是问号呢?我要的Unicode编码的就好了
立即学习“PHP免费学习笔记(深入)”;
上面的是我数据库存的数据,采用的utf8_bin编码,开始的时候用的是utf8_unicode_ci,可是还是不行
下面是我的PHP代码
<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>最后在浏览器显示的是这个尿性
<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>为什么中文显示的是问号呢?我要的Unicode编码的就好了
<code>if (function_exists('mysql_set_charset') === false) {
mysql_query("SET NAMES UTF8",$data);
}else{
mysql_set_charset('utf8',$data);
}</code>这一段应该放在mysql_query之前,另外这两个地方的第二个参数也不应该是$data,而应该是$connect
我之前也遇到过这个问题,加了个这个后就好了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>
中文的urlencode 这个编码问题,我遇到的,不能直接进行解码。不然会出现乱码的。我使用的方式是。
单独编码。然后在解码,` /**
<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>这一句应该放在遍历数据之前吧
每个人都需要一台速度更快、更稳定的 PC。随着时间的推移,垃圾文件、旧注册表数据和不必要的后台进程会占用资源并降低性能。幸运的是,许多工具可以让 Windows 保持平稳运行。
Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号