知道为什么会这样吗?
它看起来主要发生在撇号和连字符上。任何想法,如果我能解决这个问题?我从数据库中提取数据并将其打印到以下页面:
<div class="block">
<?=$details['agenda'] ?>
</div>
答案 0 :(得分:2)
正如其他评论者所提到的,这是一个字符编码问题。如果你很幸运,你可以强制你的HTML页面以UTF-8呈现并解决它。
不幸的是,如果你不幸运,你会发现字符以错误的编码存储在数据库中。或者数据库可能会转换它们。或者也许字符编码数据沿着路径被破坏了!没有办法事先知道那些角色被破坏了。
我知道修复此类问题的最佳方法是强制沿着您的路径执行每一步,以遵循UTF-8内容编码。例如,您可能会执行以下步骤:
nvarchar
(或数据库支持的任何unicode类型)。然而,解决这个问题非常棘手!很久以前,我曾习惯写这样的“检测和修复”程序:
$smartquotes = array("”", "“");
str_replace($smartquotes, '"', $mytext);
当然你知道问题是什么 - 我会不断发现我必须解决的新角色。 Microsoft Word喜欢做大量不寻常的字符 - 版权,注册标记,撇号,连字符等。我会一遍又一遍地添加这个功能,直到我发疯。所以现在我只是通过我的整个内容传递路径并强制一切遵守UTF-8规则;在大多数情况下,这似乎可以解决它。
祝你好运!