2013-12-17 34 views
0

我一直在试图正确理解HTML中的字符编码,并希望有人能够帮助我解决一个小问题,一直在遭遇。试图围绕HTML字符编码和htmlspecialchars围绕我的大脑()

我从一个mySQL数据库表(拉丁语-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()不能呈现我期望的效果。也许我完全误解了这些函数以及它们应该如何在浏览器中渲染,所以对此的任何帮助将非常感谢,谢谢!

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

回答

1

参考这个帖子: HTML code for an apostrophe

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

+0

这是htmlspecialchars应该做什么?我猜想当我将html实体放入文档时,我认为浏览器会处理它,并将其显示为屏幕上的实际正确单引号。这一思路是不正确的?它真的应该只呈现为unicode文本吗? –