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

时间:2016-03-01 09:17:34

标签: php mysql post encoding utf-8

我有一个读取一些数据的表单。以及将此数据发送到数据库的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输出数据,使用这些字符,一切都很好。这是INSERT打破它。可能有什么不对?

编辑:

这很有趣。事实上,我不是唯一一个致力于代码的人。现在我检查了它,我的好友使用了“$ conn-> query($ sql)”而不是“mysql_query($ sql)”。不知道为什么。我把它改成了常规的mysql_query,它确实有效。谢谢大家,很抱歉打扰你这么简单。

2 个答案:

答案 0 :(得分:-1)

您可以这样修理:

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

答案 1 :(得分:-1)

在将数据插入数据库之前写下这两行:

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

在$ con中写下您的连接代码。