phpmyadmin 如何在php和mysql数据库中正确地进行字符编码[duplicate]

a8jjtwal  于 2022-11-09  发布在  PHP
关注(0)|答案(4)|浏览(143)

此问题在此处已有答案

10年前就关门了。

可能重复:

UTF-8 all the way through
寻找高&低的解决方案。我已经尝试了许多变化之前张贴的问题。
在phpMyAdmin和html页面中要有相同的名字需要什么?这能做到吗?

**编辑1:**看起来这是一个mysql问题。为什么?因为php生成的html页面总是显示正确的字符。在这一点上,只有数据库显示不正确。
**编辑2:**澄清。使用下面代码片段和图像中显示的原始设置,

1.输入João并提交

  1. João显示在数据库中
  2. João重新加载后显示
    添加mysqli_query ( $link, 'SET NAMES utf8' )
    1.输入João并提交
  3. 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页面.
在找点子。谢谢。

7jmck4yq

7jmck4yq1#

字符集问题通常很难解决。基本上,您需要确保以下所有内容都是正确的:

  • 数据库 * 连接 * 使用UTF-8
  • 数据库 * 表 * 使用UTF-8
  • DB表中的各个 * 列 * 使用UTF-8
  • 数据实际上以UTF-8编码正确地 * 存储 * 在数据库中(如果您从错误的源导入数据,或者更改了表或列的排序规则,则通常不是这种情况)
  • 该网页正在 * 请求 * UTF-8
  • Apache正在提供UTF-8

下面是一个很好的教程,从头到尾介绍如何处理这个列表:https://web.archive.org/web/20110303024445/http://www.bluebox.net/news/2009/07/mysql_encoding/
听起来你的问题是因为你有双重编码(或三重编码)的字符,可能是因为改变了字符集或导入了错误字符集的已经编码的数据。

ycggw6v2

ycggw6v22#

确保你的数据库连接也使用UTF-8。2试着把下面这行放在你的页面顶部,

mysql_query("SET NAMES utf8");
qhhrdooz

qhhrdooz3#

默认的PHP不支持UTF8。确保使用mbstring函数而不是通常的内置字符串函数。

tktrz96b

tktrz96b4#

请确保您的html页面以及参与 AJAX 数据交换的脚本都使用了正确的HTTP头,包括

Content-Type: text/html; charset=UTF-8

因为浏览器可能会忽略html端的编码设置

相关问题