试图围绕HTML字符编码和htmlspecialchars()包裹我的大脑

时间:2013-12-17 21:46:52

标签: html html-entities htmlspecialchars

我一直在尝试正确理解HTML中的字符编码,并希望有人能够帮助我解决我遇到的一个小问题。

我从mySQL数据库表(latin-1)中提取了一段文本。该段恰好有一个右单引号,我读到在屏幕上显示之前通过htmlspecialchars()运行那种字符串数据是一个好主意,所以我试过......

// So let's say $paragraph is a string like "The customer's computer is on".

echo htmlspecialchars($paragraph);

这会将屏幕显示为"The customer'’s computer is on"。起初我认为这很奇怪,因为我期望’自动呈现为右单引号,但后来我想也许我忘记了元标记。由于数据库表是latin-1,我认为以下标记可以帮助它正确呈现...

<meta http-equiv="content-type" content="text/html; charset=iso-8859-1">

但仍然没有骰子,它仍然显示为&#8217;。我也试过......

htmlspecialchars($paragraph, ENT_QUOTES, 'ISO-8859-1');

但它仍然呈现相同的效果。如果我甚至不使用htmlspecialchars(),它会按预期呈现在屏幕上,但我想我只是想了解为什么htmlspecialchars()无法呈现我的方式期待。也许我完全误解了这些功能以及它们应该如何在浏览器中呈现,所以对此的任何帮助都会非常感激,谢谢!

编辑:为方程式添加一些更奇怪的内容,我尝试在HTML文档中手动输入&#8217;,实际上它确实呈现为正确的单引号。但是,当我查看HTML时,我看到htmlspecialchars()输出的&#8217;,而不是我期望的正确的单引号。有谁知道为什么会这样?这是预期的功能吗?

1 个答案:

答案 0 :(得分:1)

参考这篇文章: HTML code for an apostrophe

撇号和右单引号是两个不同的字符。也许它正确渲染,因为撇号是数据库中的内容?