我对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'报价仍然令人困惑。任何有启发性的信息都会有所帮助。
答案 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块都有其局限性。话虽如此,存储`或ì并不是问题。
更重要的是,文件格式实际上与应用程序本身的复制粘贴行为无关。
不过,这是单词存储`和ì符号的方式。
有点混乱,但是我刚刚意识到,通过“智能引号”,您可能指的是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结构中。实际上,它完全按预期存储。