LoginSignup
286
271

More than 5 years have passed since last update.

本当は怖くないCP932

Last updated at Posted at 2014-05-28

先に結論

  • CP932 は、Shift_JIS の独自実装
  • 符号化文字集合がいろいろ拡張されている
  • 拡張文字の有無で、Shift_JIS と判別可能

CP932ってなあに?

実はいろいろある

  • Microsoftコードページ932
  • IBMコードページ932
  • PC-9800仕様OEMコードページ932
  • Windows-31J(MS932)

Microsoftコードページ932

  • Microsoftが、MS-DOS 用に作った Shift_JIS の実装

IBMコードページ932PC-9800仕様OEMコードページ932

  • IBM、NECが作った、Microsoftコードページ932 の拡張

Windows-31J(MS932)

Microsoftが互換性確保の為に、IBM、NECの拡張を吸収した、Windows 用の CP932

  • CP932 といったらほぼほぼこれを指す
  • MS932 は、Java での呼称

まとめ

CP932 ≒ Windows-31J = MS932

Shift_JIS ってそもそもなにを指すの?

符号化文字集合 JIS X 0208 を使った文字符号化方式

符号化文字集合

文字列の集合と1対1で紐付けられたコードの集まり

符号化文字集合 JIS X 0208

  • 日本工業規格(JIS)で定められた、日本語の符号化文字集合
  • 7ビット or 8ビットで表現できる、94(区) x 94(点) の文字の集まり

分類はこんな感じ

  • 1〜2区 : 記号
  • 3区 : 数字・ローマ字
  • 4区 : ひらがな
  • 5区 : カタカナ
  • 6〜7区 : ギリシャ・キリル文字
  • 8区 : 罫線
  • 9〜15区 : 未定義
  • 16〜47区 : 第一水準漢字
  • 48〜84区 : 第二水準漢字
  • 85〜94区 : 未定義

文字符号化方式

  • 符号化文字集合をコードに変換する仕組み
  • Shift_JIS ならば以下のリンクに書かれているルールで、JIS X 0208 をコードに変換している

文字コード(UTF-8,Shift_JIS,EUC-JP,ISO-2022-JP)についての俺的まとめ - 今日もスミマセン。

  • EUC-JP も、文字符号化方式
  • Shift_JIS とは別の方法で、JIS X 0208 を符号化している

CP932 って Shift_JIS とどう違うの?

  • 符号化方法は一緒
  • ただし、符号化文字集合が異なる

符号化文字集合の違い

互換性の為に色んな物を詰め込んでいる

  • NEC拡張文字
  • IBM拡張文字
  • NEC選定IBM拡張文字

NEC拡張文字

  • PC-9800仕様OEMコードページ932 で追加した、NEC独自の文字集合
  • JIS X 0208 の未定義の13区に定義

tumblr_n60mfuq8UG1qz56lho1_500.png

IBM拡張文字

  • IBMコードページ932 で追加した、IBM独自の文字集合
  • JIS X 0208 の後ろに115区〜119区を勝手に追加して定義(!)

tumblr_n60mhor9KV1qz56lho1_500.png

NEC選定IBM拡張文字

  • IBM拡張文字は、JIS X 0208 の範囲外に定義されていたので、それを嫌がった NECが 89区〜92区に再定義

tumblr_n60mhd8y2x1qz56lho1_500.png

カオス

拡張文字内でかぶる文字があったりなかったり

けど、見分け方はシンプル

拡張文字をつかってれば、CP932、使ってなければ Shift_JIS

参考

286
271
4

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
286
271