我目前在将特殊字符 (® & ©) 保存到 mySQL 数据库时遇到问题。
在本地堆栈(我的开发机器本地)上,操作运行顺利,在前端输入的内容按预期保存。
当保存到数据库时,在中央服务器上使用相同的前端代码,字符将与其他字符一起保存为 ®。 在前端查看记录时这不是问题,因为它反转了它所做的并正确显示。
问题来自另一个单独的系统,该系统使用相同的数据库并且未进行任何更改,因此显示为 ® 而不是简单的 ®。
我感到困惑的原因是它似乎在我的本地堆栈上按要求工作,但在集中式服务器上却不工作。
我正在寻找关于寻找什么的想法,与我的本地相比,这可能会导致服务器配置出现这种情况。
提前致谢 标记
最佳答案
@Pranav Hosangadi(感谢)涵盖了检查编码一致性的三个方面。以下解决方案对此进行了补充。在某些情况下,@Soaice Mircea 的答案(也感谢)可能也值得考虑(一种变体),因为这个答案不能解决问题,尽管当我能够重现并找到您的问题的解决方案时这不是必需的. @Pranav 的思路对于这个问题似乎是成功的,因为它是关于在所有地方使用一个字符集而不是一个特定字符集的一致性。
要做的五件事:
确保数据库字符集和表在整个过程中使用相同的字符集,例如在 phpmyadmin 中检查这个,注意下面使用的这个字符集
使用带有数据库字符集的 php header() 函数,例如:
header('Content-Type: text/html; charset=latin1_swedish_ci');
在 html header 中插入元标记,例如:
<meta http-equiv="content-type" content="text/html;charset=latin1_swedish_ci">
在表单标签中添加charset-accept
<form action=\"testsubmit.php\" method=\"post\" accept-charset=\"latin1_swedish_ci\">
设置mysql连接的字符集例如:
$con = mysql_connect("localhost","test","test"); mysql_set_charset ( "latin1_swedish_ci", $con );
关于mysql - 将特殊字符保存到MySQL数据库,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7965652/