日期:2014-05-17  浏览次数:21626 次

Shift_JIS,CP932,MS932,Windows-31J之间的区别

http://una.soragoto.net/topics/13.html

googling article 简单翻译

?

?

经常见到的几个字符集,总结区别如下。

?

Windows 标准字符集不是Shift_JIS,而是Windows-31J

?

Shift_JIS是日文的一种字符集,Microsoft的MS-DOS采用Shift_JIS

作为日语标准编码,并命名为CP932(同理GBK相应为CP936,可以在Windows的cmd.exe中输入chcp查看)

?

开始,Microsoft允许各OEM厂商在CP932的基础上进行扩展,所以造成了各个OEM厂商的字符集都不一样。

?

后来,截止到Windows3.1日语版,Microsoft限制了各OEM厂商对字符集的扩展。而当时,

日本计算机市场基本被IBM和NEC占领,他们都是在CP932的基础上进行的扩展,所以日语的标准

字符集就变成了CP932了,IANA(The Internet Assigned Numbers Authority,互联网数字分配机构)

把它命名为Windows-31J.

?

在Java中,为了区分IBM的CP932和Windows-31J,所以用MS932来表示了。

?

上图中可以看出CP932、MS932、Windows-31J都是同一个东西

但他们和Shift_JIS是不同的,不过大部分文字都可以同样使用。

在程序中,一般,适用Windows-31J的地方如果使用Shift_JIS可能会有乱码,

但反过来,适用Shift_JIS的地方用Windows-31J就没问题