我无法在我的网页上正确显示此字符。我在这个页面使用UTF-8字符集,让我使用ISO-8859-2吗?我从数据库中获取这个带有此char的字符串,并将其保存为ě
。我的浏览器只显示html标签。
这是我唯一无法在我的网页上显示的字符(此刻)。我看一下http://www.czech.cz并使用UTF-8。
有什么建议吗?
小心! 安德烈答案 0 :(得分:1)
您是在浏览器中看到ě
,还是在查看来源时?如果你在浏览器中看到它,那么它可能在某处被双重编码 - 无论它输出到页面的任何输出都可能将其检测为未编码的HTML并试图保护您免受某种HTML注入。你会想让它不那样做。但是你有一个更深层次的问题。如果您的页面以UTF-8格式提供,并且您的数据是UTF-8,那么首先没有任何理由将其转换为HTML实体。您应该通过UTF-8数据。你不需要切换到不同的字符编码。
答案 1 :(得分:1)
首先,是的,你真的应该使用UTF-8。但这并不意味着您拥有的数据已经是UTF-8编码。
其次,听起来这个字符在数据库已经中是HTML编码的。这是一个问题,因为似乎任何显示此字符的页面也也会尝试对内容进行HTML编码。这是我正在谈论的一个例子。
来自用户的数据:ě
在进入数据库之前对数据进行HTML编码(通过htmlentities()):ě
存储在DB中的数据:ě
从DB中检索的数据:ě
在打印到页面之前编码的数据HTML:ě
浏览器中显示的数据:ě
在将数据存储到数据库之前,这是HTML编码数据的问题。这应该只在显示内容之前完成,而不是在存储之前完成。