此问题在此处已有答案:
10年前就关门了。
可能重复:
UTF-8 all the way through
寻找高&低的解决方案。我已经尝试了许多变化之前张贴的问题。
在phpMyAdmin和html页面中要有相同的名字需要什么?这能做到吗?
**编辑1:**看起来这是一个mysql问题。为什么?因为php生成的html页面总是显示正确的字符。在这一点上,只有数据库显示不正确。
**编辑2:**澄清。使用下面代码片段和图像中显示的原始设置,
1.输入João并提交
- João显示在数据库中
- João重新加载后显示
添加mysqli_query ( $link, 'SET NAMES utf8' )
1.输入João并提交 - João显示在数据库中
1.重新加载后显示Jo
结束编辑2
在mysql数据库中,使用phpMyAdmin查看:
这些项目在数据库中的显示方式如下:(我已经修改了第一个João在数据库中显示正确)
在设置了编码的html页面中,名称显示为(顺序颠倒&修改后的名称为黑色菱形),
编码:<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
我尝试过将列排序规则更改为utf8_bin、utf8_general_ci、utf8_unicode_ci,但两边都没有更改。(BBEdit)从UTF-8转换为UTF-8(与BOM),ISO拉丁语1和Windows拉丁语1。其中几个创造了更多的黑色钻石,使问题变得更糟。(在图像中设置为UTF-8)我甚至尝试用编码后的等价物preg_replace à,é等。
简短的故事是,João是进入页面(内容类型以上),João是在数据库,和João来刷新html页面.
在找点子。谢谢。
4条答案
按热度按时间7jmck4yq1#
字符集问题通常很难解决。基本上,您需要确保以下所有内容都是正确的:
下面是一个很好的教程,从头到尾介绍如何处理这个列表:https://web.archive.org/web/20110303024445/http://www.bluebox.net/news/2009/07/mysql_encoding/
听起来你的问题是因为你有双重编码(或三重编码)的字符,可能是因为改变了字符集或导入了错误字符集的已经编码的数据。
ycggw6v22#
确保你的数据库连接也使用UTF-8。2试着把下面这行放在你的页面顶部,
qhhrdooz3#
默认的PHP不支持UTF8。确保使用mbstring函数而不是通常的内置字符串函数。
tktrz96b4#
请确保您的html页面以及参与 AJAX 数据交换的脚本都使用了正确的HTTP头,包括
因为浏览器可能会忽略html端的编码设置