我一直在尝试正确理解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">
但仍然没有骰子,它仍然显示为’
。我也试过......
htmlspecialchars($paragraph, ENT_QUOTES, 'ISO-8859-1');
但它仍然呈现相同的效果。如果我甚至不使用htmlspecialchars()
,它会按预期呈现在屏幕上,但我想我只是想了解为什么htmlspecialchars()
无法呈现我的方式期待。也许我完全误解了这些功能以及它们应该如何在浏览器中呈现,所以对此的任何帮助都会非常感激,谢谢!
编辑:为方程式添加一些更奇怪的内容,我尝试在HTML文档中手动输入’
,实际上它确实呈现为正确的单引号。但是,当我查看HTML时,我看到htmlspecialchars()输出的’
,而不是我期望的正确的单引号。有谁知道为什么会这样?这是预期的功能吗?