如何在php和mysql数据库中正确编码字符

Dav*_*vid 4 php mysql phpmyadmin character-encoding

可能重复:
UTF-8一直通过

搜索高和低的解决方案.在发布问题之前,我尝试了很多变化.

在phpMyAdmin和html页面中,名称显示相同所需的内容是什么?这甚至可以实现吗?

编辑1:这似乎是一个mysql问题.为什么?因为php生成的html页面总会显示正确的字符.此时,只有数据库显示不正确.

编辑2:澄清.使用下面的代码片段和图片中显示的原始设置,

  1. 输入João并提交
  2. João显示在数据库中
  3. João重装后显示

添加 mysqli_query ( $link, 'SET NAMES utf8' )

  1. 输入João并提交
  2. João显示在数据库中
  3. Jo reo重装后显示

结束编辑2

在mysql数据库中,使用phpMyAdmin查看: 数据库结构

这些项目出现在数据库中,如下所示:(我修改了第一个João​​,使其在数据库中显示正确)

phpMyAdmin查看2个同名条目

在带有编码设置的html页面中,名称显示为(顺序颠倒和修改后有黑色菱形),

在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ã,éetc.

简短的故事是,João在页面上输入(上面的内容类型),João在数据库中,João在刷新时进入html页面.

寻找想法.谢谢.

adr*_*nne 7

弄清楚字符集问题通常很棘手.基本上,您需要确保满足以下所有条件:

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

这是一个很好的教程,从头到尾处理该列表:http://www.bluebox.net/news/2009/07/mysql_encoding/

听起来你的问题特别是你有双重编码(或三重编码)字符,可能来自更改字符集或使用错误的字符集导入已编码的数据.在上面的教程中有关于修复的整个部分.