文本编码“简体中文 (Mac OS)”不适用

未能打开文稿“xxxxxx.txt”。文本编码“简体中文 (Mac OS)”不适用。

该文件可能已使用了不同的文本编码来存储,或者可能不是文本文件。

如果你用Mac这些文字一定并不陌生吧。

当你在mac os打开windows拷贝过来的文件时很可以出现这种问题,当然也不是全部,还得满足一个条件,就是这个文件在windows上保存的时候选择的是gbk编码。

这个问题其实应该算是mac的一个bug,不知道mac为什么一直不修复,在mac上面有2种中文编码,一种是和windows上面的中文编码一样的中文(GB 18030)此编码是中文gbk编码的一种扩展,所以完全兼容gbk,但是除了这个之外mac还另外搞了一种中文编码叫简体中文(Mac OS),此编码和gbk还有GB 18030是不一样;当你打开gbk编码的文件时,mac识别成了简体中文(Mac OS),所有就打不开喽。

解决办法:

打开文本编辑的偏好设置,选择打开和存储选项卡,在下面的纯文本文件编码 下面的打开文件后面选择中文(GB 18030)就可以了。

下面是google到的内容

如何将 Macintosh 简体中文编码转换成相应的 GB 标准?
简体中文的 Mac 编码是一种移位的 GB2312。从 GB2312 转成 Mac 编码, 每个字符要加上0×8080。 相反从 Mac 编码转成 GB2312, 则每个字符都减去 0×8080。
字符集西方字符区域不能加减。下面的例子说明了如何进行这种转换。

// 如字符需要转换则返回true,反之单字节字符则返回false(意味着只处理了首字节)
// (i.e. false 表示是西方字符)
boolean MacToGB2312(unsigned char first, unsigned char second,
    unsigned short *output)
{
    if (first < 0x81) {
        *output = first;
        return false;
    } else {
        unsigned short temp;
        temp = (first - 0x80) << 8;
        temp += (second - 0x80);
        *output = temp;
        return true;
    }
}
// 总是转换, 无需单独获取字节,无需返回是否转换
void GB2312ToMac(unsigned short input, unsigned short *output)
{
    *output = input + 0x8080;
}

从代码中可以看出, 需要移动双字节字符的每个字节。这样确定一个字符是双字节字符的一部分还是单字节西方字符就显而易见了。

This entry was posted in Mac OS X and tagged . Bookmark the permalink.

One Response to 文本编码“简体中文 (Mac OS)”不适用

  1. dollare says:

    我想问一下 http://s.yanghao.org 这个网站是不是通过小偷程序实现的。

发表评论

电子邮件地址不会被公开。 必填项已用 * 标注

*

您可以使用这些 HTML 标签和属性: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>