Microsoft Word DOC 和 DOCX 文件的字符编码?
Posted
技术标签:
【中文标题】Microsoft Word DOC 和 DOCX 文件的字符编码?【英文标题】:Character encoding of Microsoft Word DOC and DOCX files? 【发布时间】: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 文件等二进制文件的功能。这就像让您的说英语的朋友记事本先生索引或翻译俄语文本。这是完全不同的字母/语言(不同的字符编码)
【参考方案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 年就已经存在,所以你会认为大多数人现在已经切换了。但是还是……以上是关于Microsoft Word DOC 和 DOCX 文件的字符编码?的主要内容,如果未能解决你的问题,请参考以下文章
python 使用LibreOffice的命令行界面将PDF文件转换为与Microsoft Office Word兼容的doc / docx文件。
怎么使用poi修改word(doc和docx),如何修改带表格的word。高手指点下。小弟刚接触。非常着急
Python:读取 .doc.docx 两种 Word 文件简述及“Word 未能引发事件”错误