我有两台服务器。每个都运行 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;
?>
一台服务器将以下内容发送到屏幕
“好”
另一个将此发送到同一浏览器 (Firefox) 中的屏幕
‘好’
任何人都可以发现问题或建议我如何解决这个问题吗?
最佳答案
问题:
浏览器误解了编码。
可能的原因:
- 您没有指定 mysqli 连接的编码,请使用 mysqli::set_charset()
- 您没有指定 HTML 5 文档类型
<!DOCTYPE html>
启用 Unicode (UTF-8) - 在 HTTP header 中指定了另一种编码
- 网络服务器使用另一种编码提供页面并覆盖
header()
- 如果没有配置,一个 PHP 实例的配置可能与另一个实例不同。
- 如果没有配置,一个 PHP 实例可能是 5.6 之前的旧版本,默认没有配置 UTF-8。
- 数据以不同方式粘贴到两个数据库中,您可能需要仔细检查。
关于mysql - 来自MySQL的乱码,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44208735/