2016-03-15 127 views
0

我的问题是,我的查询结果如何对人类无法读取。 我得到这样的结果在浏览器: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'); 
+0

'mysqli_character_set_name($ con)'的输出是什么?因为connexions也有编码。如果不正确,请参阅函数['mysqli_set_charset'](http://php.net/manual/en/mysqli.set-charset.php) – Zimmi

+0

@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' –

回答

0

您需要适当的HTML标签:

<!doctype html> 
<html> 
<head> 
<meta charset="utf-8"> 
<title>Your Page Title</title> 
</head> 

<body> 

YOUR CONTENT HERE 

</body> 
</html> 
+0

不幸的是,我只使用PHP的JSON,因为我使用HTML的JSON出现并且应用程序崩溃:S –

+0

您可以查看输出源在你的浏览器中,并将其添加到你的答案? – WheatBeak

+0

浏览器中的源代码仅此: 'ID:5Reg。 dátum:2016-02-29 18:57:52C si' 没有任何HTML或任何因为我在php用户的json用户,应用程序读取所有的东西,如,等,所以我只需要纯粹的PHP –

0

入住PHP mb_convert_encoding。

$str = mb_convert_encoding($str, "UTF-8", "utf8-hungarian-ci"); 
+0

'utf8-hungarian-ci'不是一种字符编码类型,它是一种整理。第三个参数应该是源字符串的字符编码。这会引发错误。 – WheatBeak

+0

如果我将utf8-hungarian-ci更改为uft8mb4-bin或utf8-bin,没有任何更改=( –