将 UTF-8 编码的文本发送到数据库时,特殊字符会损坏


When UTF-8 encoded text is sent to database, special characters get corrupted

我有一个读取一些数据的表单。以及将此数据发送到数据库的 php 文件。所有的html文件和php文件都是UTF-8。当表单读取数据时,我在 INSERT 语句之前与echo进行了检查。 echo正确显示单词。但是当它被发送到数据库时,它到达时带有损坏的字符。

例如:我发送" Būve "这个词。 echo完全按照那样打印它。但是在数据库中我得到" BÅ«ve "。连接后我也有这两个。

mysql_query("SET NAMES UTF8");
mysql_query("SET CHARACTER SET utf8");

PHP代码:

echo $_POST[pasutitajs];
$sql = "INSERT into ligumitable (nrpk, ligums, pasutitajs, parkstisanasdatums, summa,)  VALUES ('$_POST[nrpk]', '$_POST[ligums]', '$_POST[pasutitajs]', '$_POST[parkstisanasdatums]', '$_POST[summa]')";

数据库中的表也是utf8,如果我通过phpmyadmin取消放置数据,使用这些字符,一切都很好。是插入打破了它。可能出了什么问题?

编辑:

这很有趣。问题是,我不是唯一一个处理代码的人。现在我检查了一下,我的朋友使用了"$conn->query($sql)"而不是"mysql_query($sql)"。不知道为什么。我将其更改为常规mysql_query并且可以正常工作。谢谢大家,很抱歉用这么简单的事情打扰您。

你可以这样修复它:

$sql = utf8_decode("INSERT into ligumitable (nrpk, ligums, pasutitajs, parkstisanasdatums, summa,)  VALUES ('$_POST[nrpk]', '$_POST[ligums]', '$_POST[pasutitajs]', '$_POST[parkstisanasdatums]', '$_POST[summa]')");

在将数据插入数据库之前,请写下以下两行:

  $str="set names UTF8";
  mysql_query($con,$str);

$con输入连接代码。