2012-08-01 72 views
0

我想使用POSIX编写跨平台文件IO实用程序。我想知道我在Windows上编写的文件是否可以移动到OS X(通过电子邮件或拇指驱动器),并且仍然显示包含完全相同的内容?如果我将文件从OS X移动到Windows,那该怎么办?用于字节POSIX兼容的Windows/Mac文件io字节?

另外,在任何平台上有任何奇怪的UTF-8异常,我应该知道什么时候将字符串写入此文件?

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

回答

1

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

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

至于与PowerPC相关的排序相关问题,这并非严格对待。 ARM至少可以以任何一种字节顺序进行操作,并且尽管iOS倾向于使用little-endian(与Intel匹配),但其他操作系统可能以big-endian模式运行,而某些(例如Linux)可以以任何方式进行编译。维基百科没有提及Android设备通常使用哪种字节顺序。

+0

感谢您的详细解答! – Brett 2013-01-09 19:21:00