php - 无法获得使用 UTF-8 的编码,即使使用 <metadata> 标记?

标签 php mysql joomla joomla2.5

我将一个 Joomla 1.5 站点转换为 2.5,几乎一切正常,但我遇到了字符显示问题。在现场网站上有类似 “You Agency guys are twisted.” 的文字, 它显示正常,但在转换后的站点上,同一数据库文章显示为 �You Agency guys are twisted.� .

现在,我已验证这两个元素具有完全相同的计算样式。但感觉像是字体问题。这可能是 Joomla 2.5 如何编码该字符的问题?

编辑 1

评论后我去验证了数据库。我发现 character_set_database旧数据库是latin1而不是 utf8 ,所以我运行了这条语句:

alter database my_database default charset latin1;

现在所有字符集变量都在两个数据库之间对齐。此外,我验证了该页面的字符集是 utf-8因为它发出了这个 <metadata>标签:

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

但是,字符仍然无法正常显示。

编辑2

我也试过设置我的 default_charsetutf-8对于 PHP:

default_charset = "utf-8"

在添加该行之前甚至没有设置,所以我猜这将是 Apache 默认值。

编辑3

我现在还验证了 index.php文件有一个 Content-Type text/html; charset=utf-8 的标题.但是很遗憾,这些特殊字符仍然无法正确显示。

最佳答案

尝试先运行此查询:

mysql_query("SET NAMES 'utf8'");

上次我遇到字符集问题是因为即使其他一切都是 UTF-8(提供的 HTML、我编写的代码、数据库表等),数据库连接 仍在传递另一个字符集中的所有内容。这应该可以解决这个问题。

编辑:正如下面@null.point3r 所提到的,使用以下代码是更好的选择,因为转义字符串可能仍然使用错误的编码:

$mysqli->set_charset('utf8')

关于php - 无法获得使用 UTF-8 的编码,即使使用 &lt;metadata> 标记?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17837752/

相关文章:

php - 如何从 MySQL 数据创建二维码?

php - 使用 Joomla 删除另一个表中的多行

html - 减少加载时间,或让用户认为加载时间更少

php - 从表单中获取值,从 MySQL 中提取结果,并使用 AJAX 获取结果

mysql - 使用 MySQL Workbench 更改 PK 和 FK 列类型

javascript - 使用 jquery 滚动显示页面一侧的元素

php - 我需要通过使用引用帖子中的表用户的外键来了解帖子的所有者

mysql - MySql 中复杂的一对多查询

php - Ratchet php/棘爪连接关闭(1009 - )FRAME::CLOSE_TOO_BIG = 1009

php - PHP 脚本是否需要等待 MySql 触发器完成?