UTF-8法语重音字符问题

时间:2013-04-20 17:18:18

标签: php html mysql character-encoding

当我看到使用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,静态的正方形!

任何提示?

2 个答案:

答案 0 :(得分:5)

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

SET NAMES utf8;
SET CHARACTER SET utf8;

并确保每个表格都CHARACTER SET设置为UTF-8

或者您也可以更新server configuration

答案 1 :(得分:2)

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

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

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

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

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