5

我有一组想要使用我编写的 PHP 工具发布的 Word 文档。我将 Word 文档复制并粘贴到文本框中,然后使用 PHP 程序将它们保存到 MySQL 中。我遇到的问题来自 Word 文档具有的所有非标准字符,例如弯引号和省略号(“...”)。我目前所做的是手动搜索并用纯文本或 HTML 实体(é ; 等)替换这些类型的东西(以及诸如 e-acute 之类的外来符号)是否有 PHP 中可以调用的函数Word 文档的输出,并将应为实体的所有内容转换为实体,并将其他在 Firefox 中无法正确显示的符号转换为可以显示的符号。

谢谢!

4

5 回答 5

5

这在过去对我很有帮助:

$str = mb_convert_encoding($str, 'HTML-ENTITIES', 'UTF-8')
于 2008-10-13T19:34:33.477 回答
3

更好的解决方案是确保您的数据库设置为支持 UTF-8 字符。扩展集中可用的附加字符应涵盖您正在谈论的所有“非标准”字符。

否则,如果您确实必须将这些字符转换为 HTML 实体,请使用htmlentities()

于 2008-10-13T19:27:01.810 回答
1

我认为所有这些答案都忽略了一个要点。Windows 本身使用 latin1 的 Windows 风格,因此如果您将一些特殊字符(如不对称引号)粘贴到 Windows 机器上的表单中,然后将其发送到 unix(或任何非 muckrosoft)框(即发送到数据库)或其他)某些字符与 unix 系统所理解的任何内容都不匹配,因此字符混乱和乱码。这意味着即使你有一个 UTF-8 数据库,并使用 htmlentities,一些讨厌的东西仍然会通过,因为它们是操作系统无法识别的字符——它们甚至不是 UTF-8 的一部分——是微软独有的发明。

我对这一切的掌握有点不稳定 - 查看http://www.cs.tut.fi/~jkorpela/www/windows-chars.html以获得我在上面截取的简短形式的出色解释。- 如果有人有更好的解决方案(肯定有一个!)如何 PHPify 这篇文章的解释......我很想听听!

于 2010-05-18T09:32:01.977 回答
0

htmlspecialchars() 会让你走得很远,但要小心,因为 Word 文档很乱。

于 2008-10-13T19:28:50.900 回答
0

这是我为非便携式 Windows 字符集的问题准备的解决方案。这会将有问题的几乎是拉丁语 1 字符替换为等效的 HTML 实体。

$translation=array(
    // reference from http://www.cs.tut.fi/~jkorpela/www/windows-chars.html
    "\x82" => "‚",
    "\x83" => "ƒ",
    "\x84" => "„",
    "\x85" => "…",
    "\x86" => "†",
    "\x87" => "‡",
    "\x88" => "ˆ",
    "\x89" => "‰",
    "\x8a" => "Š",
    "\x8b" => "‹",
    "\x8c" => "Œ",
    "\x91" => "‘",
    "\x92" => "’",
    "\x93" => "“",
    "\x94" => "”",
    "\x95" => "•",
    "\x96" => "–",
    "\x97" => "—",
    "\x98" => "˜",
    "\x99" => "™",
    "\x9a" => "š",
    "\x9b" => "›",
    "\x9c" => "œ",
    "\x9f" => "Ÿ",
);    
return str_replace(array_keys($translation),array_values($translation),$input);

它对我有用 TM

于 2011-07-03T04:46:39.810 回答