如何在mysql db中存储和获取确切的字符?

时间:2013-05-21 09:19:05

标签: php mysql character-encoding collation

包含特殊字符的内容,例如存储时' " -将替换为之类的字符。但并非所有字符实例都更改为像这样的字符。所以有点奇怪为什么它只会影响某些角色,而不是全部。

在线阅读了一些文章后,我发现了table collationcharset

  • 我正在使用PHP MySQL
  • 我在存储和获取值时使用预准备语句
  • 数据库表排序规则设置为utf8_unicode_ci
  • 我的网页为html5 <meta charset="utf-8">

通过上述设置,我仍然可以获得黑色钻石。有帮助吗?我有点绝望。

编辑:

也许你们中的一些人将来会遇到完全相同的问题。您可以在下面找到我的答案作为完全相同的解决方案。干杯!

2 个答案:

答案 0 :(得分:2)

  

我的网页是带有<meta charset="utf-8">

的html5

无论meta是什么都没用 页面字符集仅由Content-type HTTP标头确定,必须包含正确的字符集。

PDO的DSN中的

$mysqli->set_charset('utf8') / ;charset=utf8也应该被使用,但在您的情况下似乎不是问题。

答案 1 :(得分:1)

好的这篇文章已经有几个星期了,但我发现了我的错误。

存储在数据库中并从中正确设置为UTF-8的值。问题发生在我echo htmlentities时。

我的旧回声通过:htmlentities($str, ENT_QUOTES);它没有'UTF-8'

新的回声通过:htmlentities($str, ENT_QUOTES, "UTF-8");它有效。

唉。几个字符的伤害。

无论如何,感谢所有帮助过的人。