【问题标题】:UTF-8 French accented characters issueUTF-8 法语重音字符问题
【发布时间】:2013-04-13 22:28:15
【问题描述】:

当我使用 phpmyadmin 看到存储在 mysql 数据库中的数据时,字符完全存储为 é à ç 但是当我使用 php 在具有以下确切结构的 html 文档上显示这些数据时:

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title></title>
</head>

<body>
</body>
</html>

我得到的是正方形而不是重音字符,但是,对于尚未从同一页面中的 mysql 加载的静态内容上的任何重音字符,我没有这个问题。

当我在页面的源代码上看到它们似乎是相同的!例如:

源代码上的部分静态数据显示为:

éçà

部分mysql原始数据:

éçà

我尝试替换

<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />

<meta http-equiv="Content-Type" content="text/html; charset=windows-1552" />

结果我得到了 mysql 一个固定的,带有正方形的静态!

有什么提示吗?

【问题讨论】:

  • 看起来是配置错误的问题。也许您的数据库驱动程序没有使用 UTF-8?当您更改为 windows-1552 时,来自数据库的数据显示正常,而静态文件并不意味着您的源文件(正确)采用 UTF-8,但来自数据库的数据正在到达编码格式错误。无论发生什么,坚持使用 UTF-8。
  • 感谢您的回复,我检查了数据库,发现排序规则设置为latin1_swedish_ci,这可能是问题的根源吗?
  • 是的,这就是问题的根源,您将数据存储在 mysql 中的 ascii 中,然后尝试在 html 中将其显示为 utf8 ..
  • 是的,很可能就是这个问题。
  • phpmyadmin 的utf-8 菜单级别有很多选择,我应该选择哪一个?

标签: php html mysql character-encoding


【解决方案1】:

看起来像是配置错误的问题。很可能您的数据库或驱动程序没有使用 UTF-8。

当您更改为windows-1552 时来自数据库的数据显示正常,而静态文件并不意味着您的源文件(正确)是 UTF-8,但来自数据库的数据是到达错误的编码格式。

无论发生什么,坚持使用 UTF-8。

更新:有一个线程解释了如何自动设置连接的编码:

Change MySQL default character set to UTF-8 in my.cnf?

【讨论】:

  • 谢谢佩德罗,问题已经解决,我不会坚持使用 windows-1552。有一个术语窗口有问题大声笑。谢谢
【解决方案2】:

这是一个很常见的字符集问题,你需要为 MySQL 连接手动设置连接编码(那些应该是你建立连接后执行的第一个查询):

SET NAMES utf8;
SET CHARACTER SET utf8;

还要确保每个表都将CHARACTER SET 设置为UTF-8

或者你也可以更新server configuration

【讨论】:

猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-04-19
  • 2012-11-10
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-10-14
相关资源
最近更新 更多