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

试图让我的大脑围绕HTML字符编码和htmlspecialchars(),html,html-entities,htmlspecialchars,Html,Html Entities,Htmlspecialchars,我一直在努力正确理解HTML中的字符编码,希望有人能帮我解决我遇到的一个小问题 我正在从mySQL数据库表(拉丁语-1)中提取一段文本。这段话恰巧有一个正确的单引号,我读到在屏幕上显示之前通过htmlspecialchars()运行那种字符串数据是个好主意,所以我试着 // So let's say $paragraph is a string like "The customer's computer is on". echo htmlspecialchars($paragraph); 这

我一直在努力正确理解HTML中的字符编码,希望有人能帮我解决我遇到的一个小问题

我正在从mySQL数据库表(拉丁语-1)中提取一段文本。这段话恰巧有一个正确的单引号,我读到在屏幕上显示之前通过
htmlspecialchars()
运行那种字符串数据是个好主意,所以我试着

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

echo htmlspecialchars($paragraph);
这将在屏幕上显示为“客户的计算机已打开”。起初我觉得这很奇怪,因为我期待着
自动呈现为正确的单引号,但后来我想我可能忘记了meta标记。由于数据库表是latin-1,我认为下面的标记将帮助它正确呈现

<meta http-equiv="content-type" content="text/html; charset=iso-8859-1">
但它仍然呈现相同的效果。如果我甚至不使用
htmlspecialchars()
它会按预期呈现在屏幕上,但我想我只是想理解为什么
htmlspecialchars()
没有按预期呈现。也许我完全误解了这些函数以及它们在浏览器中的呈现方式,因此,如果您能在这方面提供帮助,我将不胜感激,谢谢

编辑:为了给等式增加一些奇怪之处,我尝试手动输入
编码到HTML文档中,它实际上以右单引号呈现。然而,当我查看HTML时,我看到
输出htmlspecialchars()的位置,而不是我所期望的正确的单引号。有人知道为什么会这样吗?这是预期的功能吗?

请参阅本文:


撇号和右单引号是两个不同的字符。也许它的呈现是正确的,因为撇号是数据库中的东西?

这就是htmlspecialchars应该做的吗?我想,当它将html实体放入文档中时,我认为浏览器会处理它,并在屏幕上显示为实际正确的单引号。这种想法是错误的吗?它真的应该只呈现为unicode文本吗?
htmlspecialchars($paragraph, ENT_QUOTES, 'ISO-8859-1');