【发布时间】:2017-10-27 18:29:16
【问题描述】:
我有两台服务器。每个都运行 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) 中将其发送到屏幕
‘好’
谁能发现问题或建议我如何解决这个问题?
【问题讨论】:
-
如何将数据导入 mysql?字符也可能在输入的过程中被破坏。你说你从剪贴板复制它,但它必须比这更复杂:你使用什么程序将数据实际获取到 mysql 中?这显然不能解决您的问题,但只是指出,首先可能进行修改的唯一原因是因为您的单引号实际上不是单引号,而是 unicode 字符,很可能是 U+2018 和 U+2019
-
我会直接检查两个数据库以查看数据库中的内容(最好从命令行使用 mysql)。如果您在两者中看到相同的内容,则字符可能会在输出时受到破坏。如果存储了不同的结果,那么您的字符在输入时会被破坏。
-
见stackoverflow.com/questions/38363566/…中的“Mojibake”