Last modified: Sun Dec 27 14:00:33 JST 2020
PostgreSQLにおけるJIS X 0213サポートに関する考察メモ
PostgreSQLでは(8.2現在),JIS X 0213はサポートされていません.このページでは,
PostgreSQLでJIS X 0213をサポートする際の問題点などを検討します.
詳しく書いている時間がないのでとりあえずここを見てください.
概要としては,以下.
- 2000年に制定,2004年にupdate
- 「第1面」と「第2面」からなり,第1面にはJIS X 0208の非漢字,JIS第1,2,3水準漢字を,
第2面には第4水準漢字を割り当てている
- 第1面は基本的にJIS X 0208の上位互換,第2面はJIS X 0212と対比されるが互換性はない
JIS X 0201,JIS X 0208,JIS X 0212との互換性 |
- JIS X 0213第1面はJIS X 0208の空いている領域に字を増やした(JIS X 0208の「保留領域」を使っている)ので,
JIS X 0208の上位互換として使うことができるということになっているが,
実際にはベンダーがすでに外字領域としてこの「保留領域」を使っているため業界には受け入れられていない
- JIS X 0213 第2面はJIS X 0212とは互換性はない.共存もできない
- 基本的にJIS X 0201(1バイトカナ)は併用しない
- JIS X 0213のエンコーディング(符号化方式)は,ISO/IEC 2022に準拠したISO-2022-JP-2004,Shift_JIS-2004,EUC-JIS-2004が定義されている.
- Shift JISと類似のエンコーディングShift_JIS-2004があるが,有力ベンダーの反対で「参考」扱いになっている
- これらはIANAには登録されていない.
- Unicode(ISO/IEC 10646, JIS X 0221)との変換表が定義されている
- Microsoftは長らくJIS X 0213をサポートしないとしていたが,次期バージョン「 Vista」でサポートすることを表明した
PostgreSQLでのJIS X 0213の実装(案) |
- バックエンドのエンコーディングとしてはEUC-JPと同じ実装が利用できるが,文字集合がJIS X 0208+JIS X 0212とは異なるし,上位互換でもないため,EUC-JPとは別のエンコーディングとして新たに定義すべき.名称は「EUC_JIS_2004」でよいだろう.
JIS X 0201を許すかどうかは微妙なところ.
Wiki Pediaによれば,EUC-JIS-2004では
ASCIIとJIS X 0213,およびJIS X 0201片仮名をサポートしているという.実装はこれでよいだろう.
JIS X 0213をサポートするという,Windows Vistaではどうなんだろう?
- UTF-8とのマッピング表は規格で定義済み.オンラインのマッピングがJISX0213 InfoCenterで入手可能
- Shift_JIS_2004をクライアントエンコーディングとして追加,EUC_JIS_2004,UTF-8との変換を行う.
Shift_JIS_2004とUTF-8との変換表もJISX0213 InfoCenterで入手可能
- JIS X 0213とUnicodeの対応表はプロジェクトX 0213で入手できるものがよさそう.
- 問題は,(EUCの)A4F7 -> U+304B+309A (鼻濁音)のような1文字 <--> 2文字の変換があること.まあ,なんとかなるか...
- EUC_JIS_2004とShif_JIS_2004の間の変換はロジックだけでいけるのか,テーブルが必要なのかは未確認.
- mule_interalとの変換は必要?