Help us understand the problem. What is going on with this article?

本当は怖くないCP932

More than 1 year has passed since last update.

先に結論

  • 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

参考

kasei-san
小林の中の人 長文はblogに。QiitaにはちょっとしたTIPSを
http://kasei-san.hatenablog.com/
lclco
全国の高速バス価格情報を比較・検索できるサービスサイトを運営
https://www.lclco.com/
Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
Comments
No comments
Sign up for free and join this conversation.
If you already have a Qiita account
Why do not you register as a user and use Qiita more conveniently?
You need to log in to use this function. Qiita can be used more conveniently after logging in.
You seem to be reading articles frequently this month. Qiita can be used more conveniently after logging in.
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
ユーザーは見つかりませんでした