【问题标题】:Diamond question mark showing up in HTML (from MySqli)HTML 中显示的菱形问号(来自 MySqli)
【发布时间】:2015-10-04 19:16:27
【问题描述】:

我有一个直接在 PhpMyAdmin 中填写的数据库。里面有一些特殊的字符,比如é。在 PhpMyAdmin 中,它们完美显示。当我使用 FPDF/PHP 将它们转换为 PDF 时,它们也能完美显示。当我想用 HTML(使用 PHP)显示它们时,它们会变成带有问号的菱形。

我知道这与字符集和排序规则有关,但我在这方面完全是菜鸟。我的数据库有排序规则latin1_swedish_ci,我想保持这种状态。我的页面在标题中有<meta http-equiv="content-type" content="text/html; charset=iso-8859-1">,所以我认为它们应该是相同的,但我仍然得到问号菱形......如何获得我想要的字符?

请不要说我必须将所有内容都转换为utf-8我真的很想保留latin1_swedish_ci。我在标题中尝试了charset=utf-8,并将我数据库中的一个字段转换为utf8_general_ci,但该字段也没有正确显示,所以肯定有其他问题......

【问题讨论】:

  • UTF-8 all the way through 的可能重复项
  • 以上都假定 Unicode/UTF-8,但只需将其替换为您喜欢的编码即可。重要的部分是始终与您的编码声明保持一致,并在需要的任何地方声明您使用的编码。以上资源告诉你在哪里。
  • 另外,看到“带菱形的问号”表示您的页面被解释为 UTF-8/Unicode。这可能意味着您的 HTTP 标头 声明了错误的编码,取代了您的 <meta> 声明。

标签: character-encoding collation


【解决方案1】:

感谢 deceze 的 cmets,我添加到我的 PHP 顶部:

<?

header('Content-Type: text/html; charset=iso-8859-1');

?>

从不知道元标记http-equiv 只是一个后备!

这些标签只是后备,但仅在没有遇到 HTTP Content-Type 标头时使用(措辞“http-equiv”暗示了这一点)。这在概念上也很奇怪,因为这些标签位于文档本身内部,浏览器需要先读取文档才能确定它正在处理的文档类型。

来源:Handling Unicode Front To Back In A Web App

这个来源帮助很大!谢谢你!

【讨论】:

    【解决方案2】:

    把这个放在&lt;head&gt;标签里面

    <meta charset="iso-8859-1">
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2012-09-02
      • 2019-05-10
      • 1970-01-01
      • 1970-01-01
      • 2014-11-13
      • 1970-01-01
      • 2010-09-21
      • 2015-10-27
      相关资源
      最近更新 更多