【问题标题】:Apostrophe shown as � Diamond When Copy and Paste Text From Word Doc从 Word Doc 复制和粘贴文本时,撇号显示为菱形
【发布时间】:2016-08-06 09:51:01
【问题描述】:

每当我从 Ms-Word Doc 复制文本并将其粘贴到我的 PHP 页面上的文本编辑器中并且文本包含 Apostrophe 之后,当我在页面上获取该详细信息时,Apostrophe 将转换为 � Diamond 。仅在从在线或 Ms-Word 类型的源中复制文本时才会发生

下面的代码 1 正在转换为代码 2

代码1

预算——我不太确定预算。但我希望你建议一个公平的价格 1. 时间线——我们的网站还在“*

• 开发模式 所以 w*&^%$#@!()*& 是在此之前制作这个 gif,我们的网站将在 20 天内准备好,所以如果 Gif 可以在这个时间线内准备好,它将做个好人

代码 2

预算 - 我不太确定预算。但我希望你建议一个公平的价格

1。时间线 � 我们的网站仍在运行中” *

� 开发模式所以 w*&^%$#@!()*& 是在此之前制作这个 gif,我们的网站将在 20 天内准备好,所以如果 Gif 可以在这个时间线内准备好,它将做个好人

【问题讨论】:

  • htmlspecialchars 使用 UTF-8 PHP 5.4 and 5.5 will use UTF-8 as the default. Earlier versions of PHP use ISO-8859-1. 所以虽然这在过去可能有效,但您可能需要使用 UTF-8 作为编码,取决于您的 php 版本,您还可以将编码提供给htmlspecialchars php.net/manual/en/function.htmlspecialchars.php
  • @ArtisiticPhoenix 我发现了那个东西并更新了我的问题,请检查
  • 这被称为智能引号或弯引号,请参阅stackoverflow.com/questions/1262038/…
  • @ArtisiticPhoenix 感谢您的链接,但仍有一些问题我更新了上面的问题
  • 那是因为 mdash 和项目符号不是有效的 UTF-8 字符,同样的交易你必须用等效的替换它们

标签: php error-handling character-encoding


【解决方案1】:

Microsoft Word 使用 CP1252 字符集,而不是 UTF-8。 Microsoft 使用的撇号 (code 0x92) 是无效的 UTF-8 character。因此,要修复它,您可以从 Word 复制并粘贴到无法转换的文本编辑器中。确保首先将您的源代码字符编码标记为 UTF-8。在 Eclipse 中,这是文件属性 > 文本文件编码 > 其他 > UTF-8。然后它将该文件上的字符编码存储在.settings/org.eclipse.core.resources.prefs 中。如果粘贴文本然后尝试将文件标记为 UTF-8,Eclipse 将错误地转换字符。

(对不起,您不需要使用Notepad++。如果遇到无法转换的难字符可以尝试。将其粘贴到Notepad++。然后使用Encoding > Encode in UTF-8 或Encoding > Convert to UTF -8 菜单项来转换文本。然后将文本从 Notepad++ 复制到 PHP 编辑器中。)

【讨论】:

  • 复制和粘贴文本与编码无关。操作系统基于字符识别文本,这就是文本被复制的方式;不是二进制流。 OP 根本没有在整个应用程序中正确处理编码。
  • @deceze 抱歉,不是。 Microsoft Word 以自己的格式将其文本复制到剪贴板,粘贴应用程序决定从剪贴板中采用哪种格式。我一直在处理这个问题。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多