我正在从包含项目符号和换行符的数据库中检索文本数据。我已经成功删除了换行符,并使用PHP中的strace
函数将它们转换为<br />
,但子弹行为很奇怪并显示“?”而不是“•”(见截图)。
我尝试在PHP中使用nl2br()
函数,但它仍显示相同的输出。
答案 0 :(得分:3)
我现在使用htmlentities()
代替htmlspecialchars
。我已经解决了我自己的问题,但我希望这个帖子将来会帮助其他人。
答案 1 :(得分:0)
Unicode字符U+2022 (BULLET)
以UTF-8编码为八位字节E2
80
A2
。如果您的页面包含这些八位字节,并且使用不同的字符编码(例如Windows-1252)错误地解释了页面,则生成的页面将显示三个字符â
,€
,{{1 }}
要正确显示项目符号字符,您需要为文档声明正确的字符编码:
¢
如果使用UTF-8编码是不可行的,您可以使用htmlentities()
转换字符串,该字符串应将项目符号字符和其他不可显示的字符转换为HTML字符引用(header ('Content-Type: text/html; charset=utf-8');
):
•
或者,如果没有正确配置PHP的字符编码:
$s = "Bullet \xe2\x80\xa2 character";
echo htmlentities ($s), "\n";