来自MySQL的乱码

时间:2017-05-26 19:15:49

标签: mysql encoding collation

我有两台服务器。每个运行PHP / MySQL。我将剪贴板中的6个字符的字符串粘贴到两个数据库中新创建的表中。检查表列显示两个服务器上的字符集和排序规则都设置为“utf8”和“utf8 general ci”。然后,我在两台服务器上运行以下相同的脚本。

<meta charset="utf-8">
<?php
$sql = "SELECT * FROM temp";
$link=mysqli_connect($DB_SERVER,$DB_LOGIN,$DB_PASSWORD,$DB);
$result=mysqli_query($link,$sql);
mysqli_close($link);
$row=mysqli_fetch_object($result);
$details=$row->details;
echo $details;
?>

一台服务器将以下内容发送到屏幕

一个€~good’

另一个将其发送到同一浏览器(Firefox)中的屏幕

“好”

有人能发现问题或建议我如何排除故障吗?

1 个答案:

答案 0 :(得分:1)

问题:

浏览器误解了编码。

可能的原因:

  1. 您没有指定mysqli连接的编码,请使用mysqli::set_charset()
  2. 您没有指定启用Unicode(UTF-8)
  3. 的HTML 5 doctype <!DOCTYPE html>
  4. 在HTTP-header
  5. 中指定了另一种编码
  6. 网络服务器使用其他编码为页面提供服务并覆盖header()
  7. 如果没有配置,一个PHP实例可能与另一个实例的配置不同。
  8. 如果未配置,则一个PHP实例可能是5.6之前的旧版本,默认情况下没有配置UTF-8。
  9. 数据被粘贴到两个数据库中,您可能需要仔细检查。