0

知道为什么会这样吗?

在此处输入图像描述

它看起来主要是用撇号和连字符发生的。如果我能解决这个问题有什么想法吗?我从数据库中提取数据并将其打印到页面上,例如:

<div class="block">
              <?=$details['agenda'] ?>
</div>
4

1 回答 1

2

正如其他评论者可能提到的,这是一个字符编码问题。如果幸运的话,您可以强制您的 HTML 页面以 UTF-8 呈现,这将解决它。

不幸的是,如果您不走运,您会发现这些字符以错误的编码存储在数据库中。或者数据库可能会转换它们。或者,字符编码数据可能已经沿路径被破坏了!无法提前知道这些角色在哪里受损。

我知道解决此类问题的最佳方法是强制您的每一步都遵循 UTF-8 内容编码。例如,您可能会经历如下步骤:

  1. 内容作者在 Microsoft Word 中编写包含“SmartQuotes”的文档
  2. 内容作者复制并粘贴到内容管理系统的编辑框中。
  3. 内容管理系统保存到数据库。
  4. 数据库可能会或可能不会在内部以 Unicode 存储数据 - 请确保您使用nvarchar(或您的数据库支持的任何 unicode 类型)。
  5. 从数据库中读取可能需要扫描字符。

但是,解决这个问题非常棘手!很久以前,我曾经有这样写“检测和修复”例程的习惯:

$smartquotes = array("”", "“");
str_replace($smartquotes, '"', $mytext);

你当然知道问题出在哪里——我会不断发现我必须修复的新角色。Microsoft Word 喜欢处理大量不寻常的字符——版权、注册标记、撇号、连字符等等。我会不断地添加这个功能,一遍又一遍,直到我发疯。所以现在我只是通过我的整个内容交付路径并强制所有内容遵守 UTF-8 规则;在大多数情况下,这似乎可以解决它。

祝你好运!

于 2012-08-17T18:55:28.723 回答