Mik*_*oud 3 php mysql joomla joomla2.5
我将一个Joomla 1.5网站改为2.5,几乎一切都很顺利,但我正在与一个角色的展示作斗争.在实际站点上有文本“You Agency guys are twisted.”,它显示正常,但在转换后的网站上显示相同的数据库文章?You Agency guys are twisted.?.
现在,我已经验证了这两个元素具有完全相同的计算样式.但感觉就像字体问题.这可能是Joomla 2.5如何编码这个角色的问题吗?
评论结束后,我去验证了数据库.我发现character_set_database旧的数据库是latin1和不是utf8,所以我运行了这个声明:
alter database my_database default charset latin1;
Run Code Online (Sandbox Code Playgroud)
现在所有字符集变量在两个数据库之间排列.此外,我验证了页面的字符集是utf-8因为它发出了这个<metadata>标记:
<meta http-equiv="content-type" content="text/html; charset=utf-8">
Run Code Online (Sandbox Code Playgroud)
但是,字符仍然无法正常显示.
我也试着设置我default_charset来utf-8为PHP:
default_charset = "utf-8"
Run Code Online (Sandbox Code Playgroud)
在添加该行之前,甚至没有设置,所以它将是我猜测的Apache默认值.
我现在还验证了该index.php文件的Content-Type标题是text/html; charset=utf-8.但是,这些特殊字符仍然没有正确显示.
MarcB的评论完全正确 - 每层的编码必须相同.要调试它,您需要找到哪个图层的编码不正确.
做这个:
搜索您的PHP源代码并找到执行实际调用的行以从MySQL中选择内容.
此时,十六进制编码字符串并查看原始字节是什么.例如:
// temp, debugging
print("TEST:".bin2hex($whatever_field_value));
die();
Run Code Online (Sandbox Code Playgroud)
看看你得到了什么.正确编码的左UTF-8"智能引用"将给出:e2809c.如果它改为给你一个字节或其他值,那么它不是UTF-8.此时您知道编码问题介于PHP mysqli调用和数据库之间(检查mysql字段的字符集,如果有任何显式设置,表的默认字符集,以及连接的字符集 - 请参阅mysqli_set_charset)
(注意:通过将文本文件保存为UTF-8,然后使用任何二进制编辑器或hexdump -C在Mac/Linux上使用,可以轻松查看字符的UTF-8编码.[注意UTF-8字节顺序马克 - efbbbf有些编辑放在文件的前面,这不是你想要的,忽略那个])
如果在那一点上是正确的,那么在文本输出之前再次进行相同的测试(可能在一个Joomla模板文件中).看那里是否正确.
然后在浏览器级别测试它,wget(或curl或其他)页面:
wget http://yoursitename/ -O test.html
Run Code Online (Sandbox Code Playgroud)
hexdump -C在结果上执行(或在二进制编辑器中打开)并找到引用应该在的位置,并查看原始字节是什么.
如前所述,Content-type HTTP标头和meta content-type标签需要匹配您正在使用的编码(UTF-8) - 因此请检查它(wget -S将显示标题).但是,要意识到您的标题和元标记不仅需要说UTF-8,而且数据实际上必须编码为UTF-8 - 这就是您需要如上所述进行检查的原因.
这将告诉您缩小问题所需的知识,此时您可能已经知道需要做什么来修复,或者至少是设置的哪个特定部分导致了问题.
尝试先运行此查询:
mysql_query("SET NAMES 'utf8'");
Run Code Online (Sandbox Code Playgroud)
我最后一次遇到字符集问题是因为即使其他所有内容都是UTF-8(提供的HTML,我编写的代码,数据库表等),数据库连接仍然在另一个字符集中传递所有内容.这应该解决这个问题.
编辑:正如下面的@ null.point3r所提到的,使用以下代码是一个更好的选择,因为转义字符串可能仍然使用错误的编码:
$mysqli->set_charset('utf8')
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
5477 次 |
| 最近记录: |