【问题标题】:Character encoding of Microsoft Word DOC and DOCX files?Microsoft Word DOC 和 DOCX 文件的字符编码?
【发布时间】:2015-03-26 03:48:40
【问题描述】:

我对 Microsoft Word 使用的编码不太熟悉。如果有人从 Word 中保存 .doc 或 .docx 文件,使用的标准编码是什么?

我猜它不是 UTF-8,因为结果文本(粘贴在 UTF-8 编码的文本文件中)不支持某些标点符号(例如引号)。

例如,当粘贴到 UTF-8 文本文件中时,开头的 Word“智能引用”会产生 ì 符号。如果 Word 确实以 UTF-8 编码,那么 Word 如何尝试呈现实际的 UTF-8 character

编辑

经过一番挖掘,我可以看到 Microsoft Word .docx 文件实际上是一种压缩格式。解压缩它会导致解压缩许多 .xml 文件。

但是,UTF-8 编码的文本文件无法支持这些“智能”引号仍然令人困惑。任何有启发性的信息都会有所帮助。

【问题讨论】:

  • 我无法重现该行为。可能是您的文本编辑器的问题?您可以使用 HxD 等十六进制编辑器进行检查,并查看实际写入文本文件的内容。 'LEFT DOUBLE QUOTATION MARK' (U+201C) 应使用以下 三个 字节进行编码:E2 80 9C
  • 我不知道您使用什么文本编辑器来编辑该 xml 文件。我现在最好的选择是它做得不好。你在使用记事本++吗?如果没有,我会下载并安装 Notepad++。编码的使用非常透明。
  • 据我所知,notepad++ 是一个简单的文本编辑器,不具备读取 pdf 或 docx 文件等二进制文件的功能。这就像让您的说英语的朋友记事本先生索引或翻译俄语文本。这是完全不同的字母/语言(不同的字符编码)

标签: utf-8 character-encoding ms-word


【解决方案1】:

如今,docx 文件实际上是一堆压缩的 xml 文件。其中一个文件是document.xml 文件,它以以下行开头(即 xml 序言):

<?xml version="1.0" encoding="UTF-8" standalone="yes"?>

如您所见,它是 UTF-8 编码。

编辑

UTF-8 支持完整的 Unicode 字符集。只是为了完整起见,这并不意味着所有 UTF-8 字符实际上都可以在 xml 文件中使用。即使是 CDATA 块也有其局限性。但话虽如此,存储 ` 或 ì 不是问题。

更重要的是,文件格式与应用程序本身的复制粘贴行为没有任何关系。

不过,这里是 word 存储 ` 和 ì 符号的方式。

更正

有点令人困惑,但我刚刚意识到,通过“智能引号”,您可能指的是 Word 必须表示弯引号的机制。在我之前的回答中,我认为您的意思是“反引号”,这是另一回事。 - 很抱歉造成混乱。

好吧,无论如何,这里是这些智能引号的 unicode:

让我们将它们放在一个简单的 UTF-8 编码文本文件中。 结果并不那么壮观:

  • U+2018 在 UTF-8 中编码为 E2 80 98
  • U+2019 在 UTF-8 中编码为 E2 80 99
  • U+201C 在 UTF-8 中编码为 E2 80 9C
  • U+201D 在 UTF-8 中编码为 E2 80 9D

所以,我更进一步,将它们放入 word 文件中。 我输入了一行带有常规引号和一个带有智能引号的行。

“ this is a test “ 
“ this is another test ”

然后,我保存了这个东西并查看了它是如何存储在 Word 的 xml 结构中的。实际上它完全按预期存储。

【讨论】:

  • 正是我想要的。我正在为 DOCX 文件使用 Find & Replace PowerShell,默认情况下编码设置为 ASCII,导致“?”将其存储回 XML 文件后的符号。另一种似乎可行的编码类型是 OEM,但我不确定这是否正确。呃,它在 XML 文件的顶部。谢谢。 :D
  • 我发现仅仅将.doc 文件的扩展名更改为.zip 是行不通的(这对.docx 有效)。如何查看.doc 文件的 XML 组件?
  • @ZachSmith 尽管今天有时仍在使用,.doc 实际上是一种过时的格式。 .doc 格式自 90 年代初就已经存在,当时还没有“开放格式”。所以,.doc 是二进制格式,内部不使用 xml。这是完全不同的。实际上,docx 从 2007 年就已经存在,所以你会认为大多数人现在已经切换了。但是还是……
猜你喜欢
  • 1970-01-01
  • 2016-11-20
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-07-20
  • 1970-01-01
  • 2023-03-21
相关资源
最近更新 更多