Qiita Teams that are logged in
You are not logged in to any team

Log in to Qiita Team
Community
OrganizationAdvent CalendarQiitadon (β)
Service
Qiita JobsQiita ZineQiita Blog
244
Help us understand the problem. What is going on with this article?
@kasei-san

本当は怖くない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

参考

244
Help us understand the problem. What is going on with this article?
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
kasei-san
小林の中の人 長文はblogに。QiitaにはちょっとしたTIPSを
lclco
業界最大手高速バス料金比較サイト「バス比較なび」やLCCなど飛行機との比較ができる「格安移動」を運営

Comments

No comments
Sign up for free and join this conversation.
Sign Up
If you already have a Qiita account Login
244
Help us understand the problem. What is going on with this article?