我的问题是我的查询结果对人类来说是不可读的。 我在浏览器中得到了这个结果:
ID: 5 Reg.date: 2016-02-29 18:57:52 C�si
名字应该是'Cósi'。
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 = "carrie@gmail.com";
$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项。
所以我希望C si成为Cósi。我该怎么办?我试图将元标记更改为charset ='utf-8',mysql_query(“SET NAMES'utf8'”)和我上面提到的标题内容,所有列都是utf8-hungarian-ci,所有表和数据库也是....所以也许服务器配置是床?
当我通过php插入数据库时,在数据库中显示'Cósi',所有内容都保存在数据库中。
谢谢伙计们,我已经解决了:
mysqli_set_charset($con, 'utf8mb4');
答案 0 :(得分:0)
您需要正确的html标记:
<!doctype html>
<html>
<head>
<meta charset="utf-8">
<title>Your Page Title</title>
</head>
<body>
YOUR CONTENT HERE
</body>
</html>
答案 1 :(得分:0)
在php中检查mb_convert_encoding。
$str = mb_convert_encoding($str, "UTF-8", "utf8-hungarian-ci");