我将一个 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_charset
至 utf-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 的编码,即使使用 <metadata> 标记?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17837752/