[Namazu-devel-ja 1170] nmz/codeconv.c(get_external_charset) について

Tadamasa Teranishi yw3t-trns @ asahi-net.or.jp
2006年 8月 25日 (金) 03:53:38 JST


寺西です。

nmz/codeconv.c にローカル関数 get_external_charset() を用意しました。
nmz_get_lang() の値から、外部キャラセット文字列を生成します。
文字列はキャッシュされており、nmz_get_lang() の値に変化がなけれ
前回と同じ文字列を返します。
nmz_get_lang() の値がサポート外の場合は、NULL を返します。

get_external_charset() は nmz_codeconv_external() から呼び出し、
UTF-8 から外部コードへの変換に利用します。

サポートしているキャラセットは、"UTF-8", "EUC-JP", "Shift_JIS",
"ISO-2022-JP", "ISO-8859-1", "ISO-8859-2", "ISO-8859-15" です。
ただし、"EUC-JP", "Shift_JIS", "ISO-2022-JP" 以外は、従来の
英語、フランス語、ドイツ語、スペイン語、ポーランド語をサポート
するための限定されたものです。
また、"UTF-8" はコード変換をしないことを意味します。

- "*.utf8" は UTF-8 として扱います。
- "*.ISO-2022-JP", "*.ISO2022JP" は ISO-2022-JP として扱います。
- "*.ISO-8859-1", "*.ISO88591" は ISO-8859-1 として扱います。同様に
  ISO-8859-2, ISO-8859-15 に対応します。
- 上記のような接尾語が付かない場合、
  "ja_*" は EUC-JP, "en_*", "fr_*", "de_*", "es_*" は ISO-8859-1, 
  "pl_*" は ISO-8859-2 として扱います。
- "french", "deutsch", "german", "spanish" は ISO-8859-1, 
  "polish" は ISO-8859-2 として扱いますが、"german", "spanish", 
  "polish" はメッセージカタログの方は対応していないので、暫定状態
  です。

従来は US-ASCII 前提の英語を他の国の言語と同様に扱いました。
これは、英語だけが ISO-8859-* を扱えないのも不自然なためです。
とは言え、全ての環境で利用できる US-ASCII がないのも不便です。
"en" の扱いを変えて、US-ASCII の "C" と分ける等考えないと
いけないのかもしれません。
メッセージカタログと合わせて今後検討していきたいと思います。

なお、これらの修正は HEAD に対して行いましたが、development-2-1 にも
評価用に廉価版の get_external_charset() を導入しました。
--
=====================================================================
寺西 忠勝(TADAMASA TERANISHI)  yw3t-trns @ asahi-net.or.jp
http://www.asahi-net.or.jp/~yw3t-trns/index.htm
Key fingerprint =  474E 4D93 8E97 11F6 662D  8A42 17F5 52F4 10E7 D14E




Namazu-devel-ja メーリングリストの案内