好吧,这是愚蠢的,我无法弄清楚。
将Mysql数据库设置为utf8_general_ci排序规则。我遇到问题的领域是longtext类型。
作为é
或其他重音字符添加到数据库的字符返回为 。
我通过stripslashes
运行输出,我已尝试使用和不使用html_entity_decode
,但可以找不到输出的变化。我做错了什么?
干杯
答案 0 :(得分:2)
您尝试插入字符串的字符编码是什么?如果它在ISO-8859-1中,您可以使用PHP函数utf8_encode()将其编码为UTF-8,然后再将其插入数据库。
答案 1 :(得分:1)
正确编码非常棘手 - 层数太多了:
PHP中的SQL命令“SET CHARSET utf8”将确保客户端(PHP)将获取utf8中的数据,无论它们如何存储在数据库中。当然,首先需要正确存储它们。
为表/列定义的编码并不意味着数据在该编码中。如果您碰巧将表定义为utf8
但存储为differtent编码,那么MySQL会将它们视为utf8
并且您遇到了麻烦。这意味着你必须先解决这个问题。
您需要检查每层的数据流编码。
如果您收到例如windows-1250
,并希望存储在utf-8
中,然后在存储之前使用此SQL:
SET NAMES 'cp1250';
如果您的数据库中的数据为windows-1250
,并想要检索utf8
,请使用:
SET CHARSET 'utf8';
不要依赖过于“智能”的工具来显示数据。例如。 phpMyAdmin做(当我使用它时正在做)编码真的很糟糕。它遍历所有层次,因此很难找到。此外,Internet Explorer实际上是基于奇怪的规则“猜测”编码的愚蠢行为。使用简单的编辑器可以切换编码。另外,我推荐使用MySQL Workbench。