Microsoft Word DOC和DOCX文件的字符编码?

时间:2015-01-27 13:46:40

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

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

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

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

修改

经过一番挖掘后,我发现Microsoft Word .docx文件实际上是一种压缩格式。解压缩会导致许多.xml文件被解压缩。

然而,UTF-8编码的文本文件无法兑现这些' smart'报价仍然令人困惑。任何有启发性的信息都会有所帮助。

1 个答案:

答案 0 :(得分:1)

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

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

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

编辑

UTF-8支持全套Unicode字符。仅出于完整性考虑,并不意味着所有UTF-8字符都可以在xml文件中实际使用。甚至CDATA块都有其局限性。话虽如此,存储`或ì并不是问题。

更重要的是,文件格式实际上与应用程序本身的复制粘贴行为无关。

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

xml and hex

更正

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

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

the UTF smart quotes

让我们将它们放在一个简单的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结构中。实际上,它完全按预期存储。

enter image description here