我不太熟悉 Microsoft Word 使用的编码。如果有人从 Word 中保存 .doc 或 .docx 文件,使用的标准编码是什么?
我猜它不是 UTF-8,因为结果文本(粘贴在 UTF-8 编码的文本文件中)不支持某些标点符号(例如引号)。
例如,当粘贴到 UTF-8 文本文件中时,打开 Word 'smart quote' 会产生 ì
象征。如果 Word 确实以 UTF-8 编码,那么 Word 如何尝试呈现实际的 UTF-8 character ?
编辑
经过一番挖掘,我可以看到 Microsoft Word .docx 文件实际上是一种压缩格式。解压缩它会导致许多 .xml 文件被解压。
然而,UTF-8 编码的文本文件无法支持这些“智能”引号仍然令人困惑。任何有启发性的信息都会有所帮助。
最佳答案
这些天docx
文件实际上是一堆压缩的xml文件。这些文件之一是 document.xml
文件,以以下行开头(即 xml prolog):
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
如您所见,它是一种 UTF-8 编码。编辑
UTF-8 支持完整的 Unicode 字符集。只是为了完整起见,这并不意味着所有 UTF-8 字符实际上都可以在 xml 文件中使用。即使是 CDATA 块也有其局限性。但话虽如此,存储一个` 或一个ì 不是问题。
更重要的是,文件格式与应用程序本身的复制粘贴行为没有任何关系。
然而,这里是 word 存储 ` 和 ì 符号的方式。
更正
有点令人困惑,但我刚刚意识到,通过“智能引用”,您可能指的是 Word 必须表示 curl 引号的机制。在我之前的回答中,我认为您的意思是“反引号”,这是另一回事。 - 对困惑感到抱歉。
好吧,无论如何,这里是这些智能引号的 unicodes:
让我们把它们放在一个简单的 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 结构中的。实际上它完全按预期存储。关于utf-8 - Microsoft Word DOC 和 DOCX 文件的字符编码?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28172022/