Shift_JIS、CP932、MS932、Windows-31J

  Windows 标准字符集不是Shift_JIS、而是Windows-31J
  顺便CP932、MS932的相关术语我也尝试整理下。

  首先Shift_JIS
  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」的说法更多。

  一般情况同样的使用是没有问题的、在程序中、一般适用「Windows-31J」的地方如果使用「Shift_JIS」可能会有乱码、但反过来、适用「Shift_JIS」的地方用「Windows-31J」就没问题。

  在编程的时候、这个地方是需要斟酌推敲的。

源文:

  Windows標準の文字コードはShift_JISではなく、Windows-31Jです。
  それらの違いやCP932、MS932といった用語もあわせて整理してみましょう。

  まずはShift_JIS
  これは日本語の文字集合を符号化する文字符号化方式のうちの一つです。
  Microsoftにより、MS-DOSの標準日本語コードとして採用され、CP932という管理番号を与えられるとともに独自の拡張が行われました。

  MicrosoftはこのCP932を独自に拡張することを、OEMメーカー(MS-DOSを搭載したパソコンを販売するメーカー)に許していたため、各OEMメーカーごとに異なる拡張が行われました。

  その後、MicrosoftはWindows3.1の日本語版を出すにあたり、OEMメーカーにCP932の独自拡張を許すという方針を撤回し、当時、日本のパソコン市場で特に大きなシェアを持っていたIBMとNECによって独自に拡張されたCP932を統合し、これをWindowsにおける日本語標準コードとしました。

  Windowsの日本語標準コードとなったCP932は、IANA(インターネットに関連する番号を管理する組織)にWindows-31Jという名前で登録されました。

  Javaの世界では、IBMのCP932とWindows-31Jを区別するために、MS932という用語が使われます。


  上の図からもわかるように、「CP932」、「MS932」、「Windows-31J」は同じものをさしています。そしてそれは「Shift_JIS」とは異なるものですが、実際には「Windows-31J」をさす場合に「Shift_JIS」という言葉が使われることが多々あります。

  たいていの場合はそれで問題ないかもしれませんが、プログラミングにおいて、文字コードに「Windows-31J」と指定すべきところを、「Shift_JIS」と指定したがゆえに、文字化けを引き起こすことがあります。「Windows-31J」で定義されている文字が「Shift_JIS」にはない場合です。

  プログラミングをする場合にはしっかりおさえておきたいところです。


本文原创由bluetata发布于blog.csdn.net、转载请务必注明出处。


Shift_JIS、CP932、MS932、Windows-31J_第1张图片

你可能感兴趣的:([01],网络爬虫,[06],技术整合)