libiconv-1.12-ja-4.patch.gz

概要

libiconv-1.12 に以下の修正を施すパッチです。

効能

ダウンロード

ご利用方法

以下の例は、Linux の場合です。他の OS の場合は、適切なコマンドの使用および設定を行ってください。

パッチのあて方

$ gzip -dc libiconv-1.12.tar.gz | tar xvf -
$ cd libiconv-1.12
$ gzip -dc ../libiconv-1.12-ja-4.patch.gz | patch -p1

※パッチがあたらない場合は、GNU patch をご使用ください。

メイク&インストール

$ ./configure
$ make ; make check
$ su
# make install

必要に応じて /etc/ld.so.conf に /usr/local/lib を追加し ldconfig -v (/sbin/ldconfig -v) を実行しておく。

確認方法

$ iconv -l | grep -- -MS
EUC-JP-MS EUCJP-MS EUCJP-OPEN EUCJP-WIN EUCJPMS
CP932 MS932 SHIFT_JIS-MS SJIS-MS SJIS-OPEN SJIS-WIN WINDOWS-31J WINDOWS-932 CSWINDOWS31J
ISO-2022-JP-MS
$ 

詳細

cp932

cp932のエイリアス(別名)

cp51932

Windows Code Page 51932 (Windows での EUC-JP) を実装。

コードセット文字セットコード範囲
0 (G0)JIS X 0201 ラテン文字1バイト目 0x00〜0x7F
1 (G1)JIS X 0208:1997
NEC特殊文字
NEC選定IBM拡張文字
1バイト目 0xA1〜0xA8,0xAD,0xB0〜0xF4,0xF9〜0xFC
2バイト目 0xA1〜0xFE
2 (G2)JIS X 0201 片仮名1バイト目 0x8E
2バイト目 0xA1〜0xDF
3 (G3)未使用

eucJP-ms

cp932 の変換の修正により、iconv() を使って cp932 と EUC-JP 間の相互変換で、一部の JIS X 0208 の文字が正しく相互変換できなくなる事と、日本語EUC符号化方式で cp932 の機種依存文字に対応させる為に、TOG日本ベンダ協議会CDE/Motif 技術検討 WG が作成した eucJP-ms の変換規則 を実装しました。

eucJP-ms の変換については、次のページを作成しましたで、そちらをご覧ください。

eucJP-ms のエイリアス(別名)

ISO-2022-JP-MS

cp932 の変換の修正により、iconv() を使って cp932 と ISO-2022-JP 間の相互変換で、一部の JIS X 0208 の文字が正しく相互変換できなくなる事と、7ビットJIS符号化方式で cp932 の機種依存文字に対応させる為に、ISO-2022-JP-MS というものを実装しました。

各文字セットで使用するエスケープシーケンスは次の通りです。

表2
文字集合エスケープシーケンスコード範囲入力出力
US-ASCIIESC ( B0x00〜0x7F
JIS X 0201 ラテン文字ESC ( J0x00〜0x7F-
JIS X 0201 片仮名ESC ( I0x21〜0x3F
JIS X 0208-1978
NEC特殊文字
NEC選定IBM拡張文字
ESC $ @1バイト目 0x21〜0x28,0x2D,0x30〜0x74,0x79〜0x7C
2バイト目 0x21〜0x7E
-
JIS X 0208:1997
NEC特殊文字
NEC選定IBM拡張文字
ESC $ B1バイト目 0x21〜0x28,0x2D,0x30〜0x74,0x79〜0x7C
2バイト目 0x21〜0x7E
ユーザー定義文字ESC $ ( ?1バイト目 0x21〜0x34
2バイト目 0x21〜0x7E

ユーザー定義文字のエスケープシーケンスについて

ESC $ ( ? は、JIS X 0202:1998 (ISO/IEC 2022:1994) の次の規定を利用します。

13.3.3 私用 どのエスケープシーケンスにおいても, 終端バイトの Fp (すなわち, 03 の列) は, 私用のため保留とする。私用のためのエスケープシーケンスは, ISO 2375 の登録対象外とする。これらは, 交換当事者間の合意によって定義する。

環境変数 CHARSET_ALIAS

フォーマット

例)

Shift_JIS、EUC-JP、ISO-2022-JP の変換をそれぞれ CP932、EUC-JP-MS(eucJP-ms)、ISO-2022-JP-MS としたい場合は、次のような設定を行ないます。(bash での環境変数設定例)

CHARSET_ALIAS="Shift_JIS=CP932:EUC-JP=EUC-JP-MS:ISO-2022-JP=ISO-2022-JP-MS"
export CHARSET_ALIAS

制限事項

eucJP-ms の制限事項

JIS X 0212 の 2区23点と2区81点 が Unicode との相互変換で別のコードポイントに変換されます。

JIS X 0212 区-点eucJP-msUnicodeeucJP-ms
2-23 (TILDE)0x8FA2B7U+FF5E (FULLWIDTH TILDE)0xA1C1 (〜)
2-81 (NUMERO SIGN)0x8FA2F1U+2116 (NUMERO SIGN)0xADE2 (No.)

この制限は、cp932 との相互変換を優先させた結果、生じた制限です。

変更履歴

2007年11月16日
新規作成
2008年9月15日 - libiconv-1.12-ja-2.patch.gz
エイリアスのタイポ修正: SHIFFT_JIS-MS -> SHIFT_JIS-MS
2008年9月17日 - libiconv-1.12-ja-3.patch.gz
make -f Makefile.devel を実行して lib/aliases.h をアップデート
2008年9月19日 - libiconv-1.12-ja-4.patch.gz
SHIFT_JISX0213 のエイリアスに SHIFT_JIS-2004を追加。EUC-JISX0213のエイリアスにEUC-JIS-2004を追加。ISO-2022-JP-3のエイリアスにISO-2022-JP-2004を追加。