繁体   English   中英

双UTF-8编码,但是为什么呢? PHP/MySQL

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM