【问题标题】:File size and encoding [duplicate]文件大小和编码[重复]
【发布时间】:2019-08-10 15:36:23
【问题描述】:

我在 Windows 的记事本中创建了一个文本文件,并使用 Unicode 编码保存了它。该文件完全为空白,并按预期保存为 0 字节大小。

我再次将它(仍然是空文本文件)保存为 utf - 8 编码,并以 3 个字节的大小保存。

谁能解释这 3 个字节的来源。

干杯

【问题讨论】:

  • 可能是Byte order mark
  • 我不知道那是什么。我跟着你的链接回来了,这似乎很合理。谢谢
  • 注意:“Unicode”不是编码。 Unicode编码有很多。微软再次表现出无能(为了简化给用户,这会让他们感到困惑)。我在记事本中的选项:“ANSI”(这是错误的,ANSI 是 ASCII,或者最终是 Latin1 [所以没有 Windows 使用的某些字符]),“Unicode”(什么??),“Unicode big endian”(开始变得疯狂) 和“UTF-8”(最后是一种编码)。
  • Microsoft 由于历史原因交替使用术语 UnicodeUTF-16 LE。早在 Windows NT 开始工作时,Microsoft 就决定在内部使用 Unicode。考虑到那是 1989 年,这是一个直率的举动。他们“选择”了 UCS-2,因为当时只有 UCS-2。随着 Windows 2000 的发布,NT 已更新为支持 UTF-16。不过,Unicode 仅意味着一件事:UTF-16 LE。为了消除歧义,记事本现在提供了以下保存文件的选项:"ANSI""UTF-16 LE""UTF-16 BE"、"UTF-8""UTF-8 with BOM".

标签: windows unicode


【解决方案1】:

您正在做的事情的描述不正确。使用 "UTF-8" 编码在记事本中保存一个空文件会生成一个大小为 0 的文件。不过,记事本也允许您将文件另存为 "UTF-8 with BOM" (byte order mark)。将文本标识为 UTF-8 的 BOM 是字节序列0xEF,0xBB,0xBF。这就解释了为什么以 UTF-8 和 BOM 存储的空文件的大小为 3 个字节。

【讨论】:

  • 注意:在我的记事本上,我没有“UTF-8 with BOM”,但我有“Unicode”和“UTF-8”。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-03-09
  • 2012-06-23
  • 1970-01-01
相关资源
最近更新 更多