【问题标题】:PHP - UTF8 isn't displayed correctly although everything should be rightPHP - 尽管一切都应该正确,但 UTF8 未正确显示
【发布时间】:2012-12-16 19:11:51
【问题描述】:

我的网站上有一个 UTF8 问题,我无法解决(也无法理解)。 当我使用...

$mysqli->set_charset('utf8');

... 在我的网站空间中,特殊字符显示不正确。当我删除这个函数时,数据库查询中的所有特殊字符都会正确显示。在我的本地系统上是相反的(没有 set_charset('utf8') 字符不会以正确的方式显示)

我还做了一个测试脚本,看看这是否是我的虚拟主机的问题。该测试在我的网络空间和本地都可以正常运行。

<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<?php
$db = new mysqli( bla bla );
$db->set_charset('utf8');
$sql  = "SELECT pages_title
         FROM pages
         WHERE pages_title = 'Günstige Tablet PCs'";
$result = $db->prepare( $sql );
$result->execute();
$result->bind_result( $title );
$result->store_result();
$result->fetch();
$result->free_result(); 

echo "Title: ". $title;

现在我想不出问题出在哪里了。一切都安排妥当:

  1. 数据库本身设置为utf8-general-ci
  2. 文件采用 UTF8 格式。
  3. &lt;meta http-equiv="Content-Type" content="text/html; charset=utf-8" /&gt; 已设置。

因为测试脚本运行正常,所以问题应该在我的代码中,但我不知道是什么导致了错误,因为我没有使用 utf8_encode/decode 或类似的东西做任何事情。

有什么想法吗??谢谢!!

【问题讨论】:

  • 使用 phpMyAdmin 等数据库中的条目是否正确显示?
  • 您应该使用header 函数而不是meta 元素。
  • 是的,那里一切都很好
  • @Gumbo s/instead of/as well as - 你确实应该在标题中设置字符集,但你仍然应该在文档中声明编码。
  • 是一个标题问题,非常感谢你们!

标签: php utf-8


【解决方案1】:

BOM 可能存在问题。尝试将整个代码复制/粘贴到另一个文本编辑器并将其保存为“没有 BOM 的 Unicode”(比如 Notepad++)。

【讨论】:

  • 也是一个好建议,但在这种情况下,文件格式正确。无论如何,谢谢!
【解决方案2】:

试试这个,应该可以解决的。

<?php header('Content-Type: text/html; charset=UTF-8'); ?>

【讨论】:

  • 好的,您是否更改了您拥有的数据库中的字符集?我的意思是在创建表格时。这可能是个问题!
【解决方案3】:

您必须发送正确的标题:

header('Content-Type: text/html; charset=utf-8');

默认发送的标头取决于服务器(例如:apache)配置——这可能会在不同的环境中造成混淆。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2023-03-05
    • 1970-01-01
    • 2014-09-26
    • 2013-05-15
    • 1970-01-01
    • 2015-11-22
    相关资源
    最近更新 更多