出于安全原因,我将以下字符串从数据库'86
中拉出并通过转义函数运行,因为这是用户定义的数据:
htmlspecialchars($string, ENT_QUOTES, 'UTF-8');
我得到的回报是'86
。
所以htmlspecialchars
正在逃避撇号并将其转换为numeric character reference(而不是character entity reference,我猜是因为没有撇号)。
我遇到的问题是,当文本显示在浏览器上时,浏览器不会将其显示为'
,而只是打印'86
。查看页面的来源确认它也来自'86
(所以它不是双重编码的)。我尝试了几种浏览器。
服务器的内容类型标头已正确设置为text/html; charset=utf-8
。
为什么它不能正确显示的任何想法?
答案 0 :(得分:1)
跳过枪,看起来它实际上是'86
输出的。我正在查看Chrome中的Web检查器,而不是实际查看页面源。网络检查员正在将&
转换为&
,导致我的困惑。