mysql - 来自MySQL的乱码

标签 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;
?>

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

“好”

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

‘好’

任何人都可以发现问题或建议我如何解决这个问题吗?

最佳答案

问题:

浏览器误解了编码。

可能的原因:

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

关于mysql - 来自MySQL的乱码,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44208735/

相关文章:

mysql - 通过 MySQL 替换字段上的字符串

php - Mysql大数据库迁移

mysql - 简化/速记 SQL 数据定义语言?

mysql - 如何替换大型 MySQL 表中的单个字符

sql - MySQL 检索索引列中具有最大值的行的速度很慢

java - 从命令行和代码设置系统属性有什么区别?

java - 执行 UTF-8 Base64 编码/解码 Java 后出现奇怪的字符

perl - 在 Windows 上的 Perl 中处理 unicode 目录和文件名

MySQL 数据库未正确保存 VARCHAR 字段中的非拉丁字符

mysql - 比较密码和用户名的准确性 : utf8_general_ci or utf8_bin?