如何防止网页中出现奇怪的字符

How to prevent weird characters from showing up in web pages

通常,当从数据库中将字符串输出到网页时,特殊字符会显示为其他一些奇怪的字符(在我的示例中,em-dash 会变成 -”)。我该如何防止这种情况?

我正在使用 PHP + MySQL,我没有使用任何 frameworks

我猜这是由于 HTML 和数据库之间的 encoding/charset 不匹配造成的,虽然我不知道如何修复它。

在页眉标记中使用以下代码:

<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">

您可以尝试 this.Use 按照 php 内置函数来避免给定字符串中的那些字符。在您的情况下,数据来自数据库。

html_entity_decode($given_string,ENT_QUOTES, "ISO-8859-1");

在您的 html 查看页面中使用

<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">

并且如果您要插入其他语言字符来代替英语而不是制作该列 utf8-general-ci

Mojibake - 这是

的经典案例
  • 您在客户端中的字节已正确编码为 utf8。
  • 您连接的是 SET NAMES latin1(或 set_charset('latin1') 或...),可能是默认连接。 (应该是utf8。)
  • table 中的列已声明 CHARACTER SET latin1。 (或者可能是继承自 table/database。)(应该是 utf8。)