如何防止网页中出现奇怪的字符
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
。)
通常,当从数据库中将字符串输出到网页时,特殊字符会显示为其他一些奇怪的字符(在我的示例中,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
。)