我的问题是,我的查询结果如何对人类无法读取。 我得到这样的结果在浏览器:PHP不显示正确的结果
ID: 5 Reg.date: 2016-02-29 18:57:52 C�si
而且名称应该是“COSI”。 这个php是UTF-8,数据库是utf8-hungarian-ci。 所以我做了查询后,我把结果放到一个$ user数组中,我回显了前3个项目,例如:echo "ID: " . $user["userID"] . "Reg.date: " . $user["regdate"] . $user["name"];
我试过header('Content-type: text/html; charset=UTF-8');
但它不起作用。 我有一个innoDB phpmyadmin数据库,但服务器是我父亲的电脑。 xampp,我应该在那里搜索问题吗? 这里是所有PHP:
$con = mysqli_connect("127.0.0.1", "kxxx", "csxxx", "bxxx");
$password = "asd";
$username = "[email protected]";
$statement = mysqli_prepare($con, "SELECT * FROM user WHERE email = ? AND password = ?");
mysqli_stmt_bind_param($statement, "ss", $username, $password);
mysqli_stmt_execute($statement);
mysqli_stmt_store_result($statement);
mysqli_stmt_bind_result($statement, $userID, $reg_date, $name, $email, $password, $phonenumber);
$user = array();
while(mysqli_stmt_fetch($statement)){
$user["userID"] = $userID;
$user["regdate"] = $reg_date;
$user["name"] = $name;/which should be "Cósi"
$user["email"] = $email;
$user["password"] = $password;
$user["phonenumber"] = $phonenumber;
}
echo "ID: " . $user["userID"] . "Reg. dátum: " . $user["regdate"] . $user["name"];
echo json_encode($user, JSON_UNESCAPED_UNICODE);
的json_encode是消失了,如果空[]
应显示出来,但是这不是数组中,只有第3项。
所以我想Csisi是Cósi。我该怎么办?我尝试将元标记更改为charset ='utf-8',mysql_query(“SET NAMES'utf8'”)和上面提到的标题,所有列都是utf8-hungarian-ci,所有表和数据库太...所以也许服务器配置是床?
当我通过php插入到数据库中时,在数据库中'Cósi'显示正常,一切都保存在数据库中。
谢谢家伙,我解决它wtih:
mysqli_set_charset($con, 'utf8mb4');
'mysqli_character_set_name($ con)'的输出是什么?因为connexions也有编码。如果不正确,请参阅函数['mysqli_set_charset'](http://php.net/manual/en/mysqli.set-charset.php) – Zimmi
@Zimmi对于此: 'if(!mysqli_set_charset($ con,“ (“错误加载字符集utf8:%s \ n”,mysqli_error($ con)); \t \t exit(); printf(“当前字符集:%s \ n”,mysqli_character_set_name($ con));其他{ } \t} } 结果:'当前字符集:utf8' –