[英]Double UTF-8 encoding, but why? PHP/MySQL
我有一些 forms,将一些数据插入到 MySQL 数据库中,并且由于某种原因,字符得到了双 utf-8 编码。 你在我网站的前端看不到它,但在后端你可以看到,如果我查看来自 phpmyadmin 的数据,它是双重编码的。
此外,要显示从 phpmyadmin 输入的数据,我必须对其进行utf8_encode
。
如果我在将数据放入数据库之前对我的数据使用uft8_decode()
,它可以工作,但是我必须再次使用utf8_encode()
才能正确显示我的数据,我想找到一个更好的解决方案来重新编写我的大部分代码。
我要处理的字符是丹麦语æ、ø 和 å 字符。
I have every setting i can find in php.ini set to utf-8, every thing i can find in phpmyadmin to utf8, html meta tag set to utf-8, and still i have this error to deal with.
所以我的问题是,有谁知道为什么会发生这种情况,或者我该如何解决?...
更新:在运行 Jako 建议的 mysql 代码后,来自前端的数据在数据库的后端被正确编码,但我仍然需要运行utf8_encode()
才能在前端正确显示数据-结束了,有什么想法吗?...
更新 2:同样,在运行这个问题的答案的代码后,我仍然遇到问题,编码现在打开和关闭 utf8,我怀疑 phpmyadmin 以某种方式重置编码。 我找到了一种新的做事方式,并且可以完美运行,如下面的回答中所述...
我过去遇到过类似的问题,这对我有用。
mysql_query("SET names UTF8");
好的,我找到了答案,:我搜索了更多,(已经这样做了几个小时)并发现了这个问题:
是否使用“SET NAMES”
使用该问题的答案,我运行了这个查询:
mysql_query("SET character_set_client = UTF8");
mysql_query("SET character_set_results = UTF8");
mysql_query("SET character_set_connection = UTF8");
mysql_query("SET names UTF8");
就是这样,它现在在我所有的 php 脚本上都可以正常工作。
仍然感谢 Jako 以正确的方式引导我。
;)
更新:好的,由于编码打开和关闭并且设置没有保持这种状态,我找到了一个有效的新解决方案。 我将mysql_set_charset()添加到我的连接脚本中:
mysql_set_charset("UTF8");
它每次都为我提供来自数据库的正确数据并插入正确的数据,所以这只是一行代码。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.