Open棟梁Project - マイクロソフト系技術情報 Wiki
目次 †
概要 †
JIS2004(JIS X 0213:2004)
- JIS2004はJIS X 0208:1997(いわゆるJIS97)を拡張し、JIS第三水準文字・JIS第四水準文字を含む4344文字を追加した文字コード。
- Windows Vista / Windows Server 2008(以下、Vista/2008と略す)でサポートされた。
問題 †
- JIS2004の導入の問題には以下のものがあるが、現存するシステムの殆どは、
JIS2004の導入前からキャラクタ セット、文字コードについて同様の問題を持っている。
(例えば、JIS X 0208 → JIS X 0212時の補助漢字の追加、エンコーディングの問題など)。
- このため、JIS2004以降に、新たにJIS漢字が追加された場合も同様の方法で対処することができると考える。
- また、JIS2004導入に於ける特段新しい注意点(観点)は朱書きにしてある。
※ エンコードしないで入出力する場合は、連携先で問題点1、2を解決すれば良い。
JIS2004導入に於ける特段新しい注意点(観点)は問題点3の一点だけである。
拡張文字セットの追加 †
JIS2004拡張文字のセットが907文字(うち304文字がサロゲート ペア文字)、追加された。
Vista/2008以外の現行OSはJIS2004の拡張文字セットに未対応(拡張文字セットは、現状、Vista/2008の機種依存文字となっている)。
- 問題点1:フォントが無い場合、JIS2004拡張文字が表示されない。
- 問題点2:マシンのIMEが未対応の場合、JIS2004拡張文字を入力できない。
- 問題点3:サロゲート ペア文字・結合文字は、Lengthチェックなどに影響を与える。
[参考]:マイクロソフト サポート オンライン > Windows Vista で拡張された文字について
http://support.microsoft.com/kb/927488/ja
標準フォント デザインの変更 †
字形変更文字(標準フォントデザインが変更)が168字。
- 問題点4:マシンによっては、字形変更文字の表示や印刷が異なる。
エンコーディングの問題 †
エンコーディング処理に問題がある可能性がある。
- 問題点5:他の環境へ(Unicodeからそれ以外の文字コードに)エンコード出力できない可能性。
- 問題点6:他の環境から(Unicodeからそれ以外の文字コードに)エンコード入力できない可能性。
対応方法 †
JIS2004に対応させる †
- 以下は、WindowsOSでの対応方法。
- Mac、UNIX、Linux、その他携帯端末などの他機種についても同様に調査が必要。
- ただし、文字の表示が不要なサーバOSについては調査不要(エンコーディングの問題が起きない場合)。
日本語フォントのインストール †
Windows XP / Windows Server 2003(以下、XP/2003と略す)でも、
パッチさえ当てれば、JIS2004に対応した日本語フォントを利用可能になる。
フォントをインストールしたら、フォントを使用できるアプリケーションで確認する。
(フォントを使用のに設定が必要なアプリケーションもあるし、フォントを使用できないアプリケーションもある)
- Office2007(に同梱されるIME2007)をインストールすることで、XP/2003でもJIS2004の拡張文字セットの文字入力が可能になる。
Office2007はインターネットから、試用版(無料で60日試用可能)がダウンロードできる。
- ちなみに、IME2007のみをインストールした状態では、フォントがないため、IMEが入力したデータを参照することができないと言う現象が発生する。
この場合、前述の手順に従い、JIS2004に対応した日本語フォントをインストールすることで、この問題を解決する。
JIS90の設定に戻す †
- Vista/2008では、JIS2004に対応した日本語フォントを搭載している。一部の文字(168字)で標準フォント デザインが変更されるため、
人名、地名など字形に敏感なシステムには影響が出る可能性がある(この影響とは、顧客要件に因るところが大きい)。
- これを問題と捉えるならば、Vista/2008のフォント、IMEをJIS90に対応させる必要がある。また、このような問題は、画面上の表示だけでなく、帳票印刷(プリンタ)なども含む。
サロゲート ペア文字、結合文字 †
追加されたJIS2004拡張文字のセット、
907文字のうち304文字がサロゲート ペア文字である。
UTF-8、UTF-16で表現可能な
- サロゲート ペア文字は4バイト
- 結合文字は4バイト以上
で表現される。
APIやDBMSの使い方によって、
- 1文字として扱えるか
- 2バイト毎にバラバラに扱うか
動作が変わる。
以下に一例を示す。
- .NET FrameworkのAPI
- System.Globalization.StringInfo?は、1文字と認識する。
- System.Stringは、1文字と認識しない。
- SQL Serverの照合順序
- Japanese_90,Japanese_100は、1文字と認識する。
- Japaneseは、1文字と認識しない。
- Oracleの部分検索
- LIKECは、1文字と認識する。
- LIKEは、1文字と認識しない。
※サロゲート ペア文字のことを、サロゲートコード、補助文字とも呼ぶ。
※結合文字のことを、結合済み文字、合成文字、合成済み文字とも呼ぶ。
※Shift-JIS、EUC-JP、Big5などではサロゲート ペア文字、結合文字を表現できない
参考 †