1

我无法在我的网页上正确显示此字符。我在这个页面上使用 UTF-8 字符集,我必须使用 ISO-8859-2 吗?我从数据库中得到一个带有这个字符的字符串,并在它上面保存为ě. 我的浏览器只显示 html 标签。

这是我无法在网页上显示的唯一字符(此时)。我看了一下http://www.czech.cz,他们使用UTF-8。

有什么建议吗?

小心!安德烈亚

4

2 回答 2

1

首先,是的,您确实应该使用 UTF-8。但这并不意味着您拥有的数据已经是 UTF-8 编码的。

其次,听起来那个字符已经在数据库中进行了 HTML 编码。这是一个问题,因为似乎显示此字符的任何页面尝试对内容进行 HTML 编码。这是我正在谈论的一个例子。

来自用户的数据:进入 DB 之前的ě
HTML 编码数据(通过htmlentities()ě
): 存储在 DB 中的数据:ě
从 DB 检索的数据:ě
打印到页面之前的 HTML 编码ě
数据:在浏览器中看到的数据:ě

你看到了吗?字符变为双重编码,因此在第二个编码步骤中,& 字符被转换为实体本身。

这是在将数据存储到数据库之前对数据进行 HTML 编码的问题。这应该只在显示内容之前完成,而不是在存储之前。

于 2010-04-26T15:36:33.433 回答
1

您是ě在浏览器中看到的,还是在查看源代码时看到的?如果您在浏览器中看到它,那么它可能在某处被双重编码 - 无论将它输出到页面的任何内容都可能将其检测为未编码的 HTML,并试图保护您免受某种 HTML 注入。你会想让它不那样做。但是你有一个更深层次的问题。如果您的页面以 UTF-8 格式提供,并且您的数据采用 UTF-8 格式,那么首先没有任何理由将其转换为 HTML 实体。您应该通过 UTF-8 数据。您不需要切换到不同的字符编码。

于 2010-04-26T15:26:38.263 回答