文字コード¶
文字コード前提知識¶
- 文字コードはコンピュータ上で文字を利用するために各文字に割り当てられるバイト表現。
- 文字コードは、以下の3つの概念が含まれる。
文字集合(Character Set) | どのような文字が含まれているか | 文字集合 |
コード番号(Character Code) | 各文字に対して付与されているコード番号 | 例) 0x41 |
エンコーディング(Encoding) | どのように文字コード番号を文字に変換するか | 文字符号化方式 |
- ASCIIとは
アメリカの標準化組織であるANSIが1963年に制定した文字コードで、半角英数字、記号、制御文字で構成され合計128種類(7bit)の文字で構成される。
- Unicodeとは
世界中の言語の文字・記号を1つのコード体系に納めた世界統一文字コード
日本の文字コードとは
- 日本では、JIS(日本工業規格)が定める日本の文字コードの規格
- 日本の文字コードは平仮名、片仮名、漢字が含まれる
- 現在、JISで定められている文字コード一覧(新JIS標準)
規格番号 | 通称 | 内容 | 制定年 | 収録文字数 |
---|---|---|---|---|
JIS X 0201 | ANK | 半角英数、半角片仮名 | 1969年 | 191字 |
JIS X 0208 | JIS基本漢字 | 平仮名、片仮名、漢字、全角記号などの2バイト文字 | 1978年 | 6,879字 |
JIS X 0212 | JIS補助漢字 | 第3水準の漢字および非漢字(使用頻度が低い) | 1990年 | 6,067字 |
JIS X 0221 | UCS | ISO/IEC 10646に対応するJIS規格(Unicode) | 1995年 | 96,447字 |
JIS X 0213 | JIS拡張漢字 | JIS X 0208の6,879字に加え、第3,4水準の漢字、非漢字を追加 | 2000年 | 11,233字 |
JIS規格は基本的に5年ごとに見直されることになっており、JISの同規格番号の中にも幾つかの版がある。
JIS X 0208 | JIS X 0208:1978 |
JIS X 0208:1983 | |
JIS X 0208:1990 | |
JIS X 0208:1997 | |
JIS X 0208:2012 | |
JIS X 0213 | JIS X 0213:2000 |
JIS X 0213:2004 | |
JIS X 0213:2012 |
- 主な文字集合と符号化方式
(符号化)文字集合 | (文字)符号化方式 | 主な使われ方 |
---|---|---|
JIS X 0208 (日本語の文字集合) |
ISO-2022-JP | 主にメールの世界で使用 (JISコードと呼ばれる) |
EUC-JP | 主にUNIX/Linuxの世界で使用 | |
Shift_JIS | パソコンにおいて圧倒的な普及度がある | |
MS932 (Windowsー31J、CP932) | 主にWindowsで使用(Shift-JIS + Windows機種依存文字) | |
…etc | ||
JIS X 0213 (日本語の文字集合) |
ISO-2022-JP-3 | ※ 上記、JIS X 0208 同様 |
EUCーJISX0213 | ||
Shift_JISX0213 | ||
…etc | ||
Unicode文字集合 (世界統一文字集合) |
UTF-8 | |
UTF-16 | ||
UTF-32 | ||
…etc |
- 文字符号化方式と対応する文字集合の詳細
■JISコード
(文字)符号化方式 | 文字集合 |
---|---|
ISO-2022-JP | ASCII(ISO/IEC 646 IRV) |
JIS X 0201:1976(ローマ字部分) | |
JIS X 0208:1978(JIS C 6226-1978) | |
JIS X 0208:1983 | |
ISO-2022-JP-1 | JIS X 0212:1990 |
ISO-2022-JP-2004 | JIS X 0213:2004 第1面 |
JIS X 0213:2004 第2面 |
■EUC
(文字)符号化方式 | 文字集合 |
---|---|
EUC-JP | ASCII、JIS X 0208、半角カナ (JIS X 0201)、JIS補助漢字 (JIS X 0212) |
EUC-JIS-2000 | ASCII、JIS X 0213:2000、半角カナ (JIS X 0201)、JIS補助漢字 (JIS X 0212) |
EUC-JIS-2004 | ASCII、JIS X 0213:2004、半角カナ (JIS X 0201)、JIS補助漢字 (JIS X 0212) |
■Shift JIS
(文字)符号化方式 | 文字集合 |
---|---|
Shift_JIS | ASCII、JIS X 0208:1990、半角カナ (JIS X 0201:1997) |
Shift_JIS-2000 | ASCII、JIS X 0213:2000、半角カナ (JIS X 0201) |
Shift_JIS-2004 | ASCII、JIS X 0213:2004、半角カナ (JIS X 0201) |
■CP932、Windows-31J,MS932(IS X 0208にWindowsの機種依存文字を加えた文字コード)
(文字)符号化方式 | 文字集合 |
---|---|
Windows-31J | Windows機種依存文字、ASCII、JIS X 0208、半角カナ (JIS X 0201)、JIS補助漢字 (JIS X 0212) |
■UTF8
(文字)符号化方式 | 文字集合 |
---|---|
UTF8 |
Unicode (ISO/IEC 10646(UCS)) 日本語のJIS規格「JIS X 0201、JIS X 0208、JIS X 0212、JIS X 0213」に対応 |
- 機種依存文字
- ある特定の環境・機種(MacやPC/AT、PC-98やUNIXなど)でしか正しく表示されない文字のこと(Windows機種依存、IBM機種依存、NEC機種依存…)
- 機種依存文字問題とは、日本語環境においてはJIS規格に規定されていないために発生する問題
- 機種依存文字のほとんどが、Unicodeに含まれる文字のため、Unicodeを採用した環境では基本的に機種依存文字問題は発生しない
Note
過去、機種依存文字とされていたJIS規格文字以外の文字のほとんどが、「JIS X 2013」においてはJIS規定文字として組み込まれており、JIS標準文字となる。例えば、下記の文字は過去のJIS規格には含まれていなかったが、一部は「JIS X 2008」、残り全ては「JIS X 2013」でJIS規格文字として組み込まれている。
Note
JIS X 0208、JIS X 0213については、以下も参考のこと。
インターネット上で利用することのできる文字コード(キャラクタセット)
IANA(「Internet Assigned Numbers Authority」の略)とは
ドメイン名、 IPアドレス、 プロトコル番号、インターネット上で利用することのできる文字コード などインターネット資源のグローバルな標準化および 管理を行っている機関(現在は、各種資源のグローバルな管理の役割をICANNが引き継がれている)
現在、インターネット上で利用することができる主な文字コード
- Shift_JIS
- EUC-JP
- ISO-2022-JP
- JIS_X0212-1990
- UTF-8
一般的に文字コード変換を考慮するポイント¶
クライアント | アプリケーション(画面) | アプリケーション | サーバ | DB | 帳票 | 他システム連携 |
---|---|---|---|---|---|---|
JIS X 0213 | UTF-8 | UTF-16 | UTF-8 | UTF-8 | Shift-JIS | EUC-JP |
(Windows7) | CentOS | Soralis | ||||
適切なエンコード指定が必要な箇所の例¶
変換ポイント | エンコード方法の例 |
---|---|
クライアント⇔WebサーバHTTP通信 |
JSPのタグでcharasetを「UTF-8」を指定 <'%@ page contentType="text/html;charset=UTF-8"pageEncoding="UTF-8" %> request.setCharacterEncoding(UTF-8); response.setContentType("text/html; charset=UTF-8"); |
APサーバ⇔DB | JDBCが Java VMで使用されるUnicode16 とDBの文字コードの差異を吸収するため、アプリ側は何もしなくていい※但し、DBの文字コードに存在しない文字でDBを更新した場合、文字消失する。 |
APサーバ⇔帳票 | 帳票のフォームファイルのエンコード指定がSJISの場合、帳票ミドルウェアの文字コード変換機能を使用 |
APサーバ⇔ファイルアップロード/ファイルダウンロード |
アップロード(Windows端末 ⇒ Webサーバー)は ShiftJIS から UTF-8 ダウンロード(APサーバー ⇒ Widndows端末)は、UTF-8 から Shift-JIS |
DPサーバ⇔外部接続システム連携 | UTF-8⇔EUC-JP変換 ※HULFT等のミドルウェアで文字コード変換して電文を送受信 |
メッセージ(ログなど) |
<メッセージプロパティを使用する場合> 1. application-messages.propertiesをUTF8で生成、日本語などのメッセージを直接記入 (native2asciiでISO-8859-1に変換しなくてよい) 2. applicationContext.xmlで、ResourceBundleMessageSource に読み込む文字コード メッセージファイル(application-messages.properties)を指定する logback.xmlのログの文字コード指定等 |
メール | 文字コードを指定して、MimeMessageHelper インスタンスを生成 |
AP:Java7で使用可能なエンコード¶
Canonical Name | Description |
---|---|
Shift_JIS | Shift-JIS, Japanese |
x-SJIS_0213 | Shift_JISX0213 |
EUC-JP | JISX 0201, 0208 and 0212, EUC encoding Japanese |
ISO-2022-JP | JIS X 0201, 0208, in ISO 2022 form, Japanese |
UTF-8 | 8-bit Unicode (or UCS) Transformation Format |
ISO-8859-1 | ISO-8859-1, Latin Alphabet No. 1 ※古いバージョンのServlet仕様(Servlet 2.3)では、エンコードの指定がなかった場合、デフォルトで選択される文字コード |
DB:Oracleの日本語環境¶
データベースのキャラクタ・セット一覧
キャラクタ・セット | 説明 |
---|---|
JA16EUC | EUC 24ビット日本語 |
JA16EUCTILDE | JA16EUCの波形のダッシュとチルドの文字化け対応版 |
JA16SJIS | シフトJIS 16ビット日本語 |
JA16SJISTILDE | シフトJIS 16ビット日本語のダッシュとチルドの文字化け対応版 |
AL32UTF8 | Unicode 5.0 UTF-8ユニバーサル・キャラクタ・セット |
JIS X 0213 に対応させたい場合、データベースの文字コードセット(NLS_CHARACTERSET)をAL32UTF8に設定すること.
キャラクタ・セット | DBのバージョン | ||||
---|---|---|---|---|---|
9.2.0 | 10.1.0 | 10.2.0 | 11.2.0 | 11.2.0 | |
UTF8 | 3.0 | ||||
AL32UTF8 | 3.1 | 3.2 | 4.0 | 5.0 |
Note
Note
IBMのAIX機の文字コード
- 各国語サポートのコード・セット(文字集合)を提供する。
- AIXのコード・セット設定はロケールに依存する。
コード・セット(文字集合) | 言語 | 国またはカテゴリー | ロケール |
---|---|---|---|
IBM-eucJP | 日本語 | EUC | ja_JP |
IBM-932 (ibm - SJIS) |
日本語 | PC | ja_JP |
IBM-943 (ibm - SJIS) |
日本語 | 日本 | ja_JP |
- 各文字コード構成
<IBM-eucJP >
対応する文字コード | |
---|---|
JISCII | JISX0201 グラフィック左文字セット |
JISX0201:1976 | カタカナ/ひらがなグラフィック右文字セット |
JISX0208:1983 | 漢字レベル 1 および 2 文字セット |
IBM-udcJP | IBM ユーザー定義可能文字 |
JISX0212.1990 | JIS補助漢字 |
<IBM-932>
対応する文字コード | |
---|---|
JISCII | JISX0201 グラフィック左文字セット |
JISX0201:1976 | カタカナ/ひらがなグラフィック右文字セット |
JISX0208:1983 | 漢字レベル 1 および 2 文字セット |
IBM-udcJP | ユーザー定義可能文字と、NEC の IBM 選択文字および NEC 選択文字 |
<IBM-943>
対応する文字コード | |
---|---|
JISCII | JISX0201 グラフィック左文字セット |
JISX0201:1976 | カタカナ/ひらがなグラフィック右文字セット |
JISX0208:1990 | 漢字レベル 1 および 2 文字セット |
IBM-udcJP | ユーザー定義可能文字と、NEC の IBM 選択文字および NEC 選択文字 |
<UTF-8>
対応する文字コード | |
---|---|
UTF8 |
Unicode (ISO/IEC 10646(UCS)) 日本語のJIS規格「JIS X 0201、JIS X 0208、JIS X 0212、JIS X 0213」に対応 |
Client: Windowsの日本語環境¶
各Windows Ver 標準の日本語キャラクタセット一覧
Windows 各バージョン | 標準キャラクタセット |
---|---|
Windows 95 | JIX X 0208 - ? |
Windows 98 | JIX X 0208 - ?,JIS X 0212 |
Windows Me | JIX X 0208 - ? |
Windows NT WS | JIX X 0208 - ?,JIS X 0212 |
Windows NT SV | JIX X 0208 - ?,JIS X 0212 |
Windows 2000 Professional | JIS X 0221-1995 |
Windows 2000 Server ファミリー | JIS X 0221-1995 |
Windows XP | JIS X 0208 および JIS X 0212 |
Windows Vista | JIS X 0213:2004 |
Windows 7 | JIS X 0213:2004(通称:JIS2004) |