我遇到了一个我无法解决的问题。对于我们的网站,我们会将文字内容存储在“内容”中。 MySQL数据库中的列,偶尔会包含特殊字符,除了em破折号外,所有这些列都能正确显示。当在网站上打印出来时,输入文本中的任何短划线都会变成问号菱形替换字符。
该错误仅出现在我们的生产站点上(在我们的开发站点和登台站点上,emdashes正确呈现),这让我相信它可能是各自数据库中字符集的问题(我们的开发/登台数据库是托管在一台服务器上,并在另一台服务器上生产)。但是,包含所讨论文本内容的列在所有数据库上设置为utf-8。将输出包装在htmlspecialchars()中并不起作用。
值得注意的是,当我使用print_r()打印我保存获取的DB结果(用于调试)的变量时,em破折号将在下面打印时正确呈现。