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

标签 utf-8 character-encoding ms-word

我不太熟悉 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 存储 ` 和 ì 符号的方式。
xml and hex
更正
有点令人困惑,但我刚刚意识到,通过“智能引用”,您可能指的是 Word 必须表示 curl 引号的机制。在我之前的回答中,我认为您的意思是“反引号”,这是另一回事。 - 对困惑感到抱歉。
好吧,无论如何,这里是这些智能引号的 unicodes:
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

    关于utf-8 - Microsoft Word DOC 和 DOCX 文件的字符编码?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28172022/

    相关文章:

    .net - 在保留样式的同时以编程方式清理 Word 生成的 HTML?

    Python 正则表达式 £ 符号

    php - 使用 PHP 创建表

    python - 在 python 3.8 中将带有字节的 Python 字典转换为字符串

    java - 如何使用java将ASCII扩展字符(其ascii</code> 127)写入XML文件?

    mysql数据库的python3编码

    java - 从 US-ASCII 编码字符串获取 UTF-8 编码

    r - 使用officer包编写word文档: How to combine several rdocx objects?

    ruby-on-rails - Ruby on Rails Oracle 编码

    excel - 如何使用 AddOLEObject 将 Excel 图表插入 Word