0

我想使用 POSIX 编写一个跨平台文件 IO 实用程序。我想知道我在 Windows 上编写的文件是否可以移动到 OS X(通过电子邮件或拇指驱动器)并且看起来仍然包含完全相同的内容?如果我将文件从 OS X 移动到 Windows 会怎样?

此外,在将字符串写入此文件时,我应该注意这两个平台上是否有任何奇怪的 UTF-8 异常?

这个问题只针对较新的 Mac,而不是 PowerPC Mac。我只是想确保所有的字节顺序和相关的字节排序问题都在 PowerPC 中消失了。

4

1 回答 1

1

如果您的 POSIX 代码在打开文件进行写入时使用“二进制”标志,并且两台机器具有相同的字节顺序(现代基于英特尔的 Mac 和基于英特尔的 Windows PC 都是如此),那么是的,文件应该是字节-字节相同。

至于 UTF-8,主要需要注意的是,一般来说,Windows 更喜欢预先组合的字符(“规范化形式的 NFC”),而 Mac OS 更喜欢分解的字符(“规范化形式的 NFD”)。也就是说,Windows 将“é”编码为 U+00E9 带尖音的拉丁小写字母 E,而 Mac OS 将其编码为 U+0065 拉丁小写字母 E,后跟 U+0301 COMBINING ACUTE ACCENT。显然,两个操作系统都会以相同的方式呈现两个序列,但我相信这会影响用户输入的字符,或从磁盘上的文件名读取。

至于与 PowerPC 相关的字节序相关问题,严格来说并非如此。ARM 至少可以在任一端模式下运行,例如,iOS 倾向于使用 little-endian(与 Intel 相匹配),其他操作系统可能以 big-endian 模式运行,并且一些(例如 Linux)可以以任何一种方式编译。维基百科没有提到 Android 设备通常使用哪种字节序。

于 2013-01-08T07:14:53.040 回答