nmz/codeconv.c(get_external_charset) について2006年08月25日 10時09分13秒

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() を導入しました。

コメント

コメントをどうぞ

※メールアドレスとURLの入力は必須ではありません。 入力されたメールアドレスは記事に反映されず、ブログの管理者のみが参照できます。

※なお、送られたコメントはブログの管理者が確認するまで公開されません。

名前:
メールアドレス:
URL:
コメント:

トラックバック

このエントリのトラックバックURL: http://namazu.asablo.jp/blog/2006/08/25/498567/tb

※なお、送られたトラックバックはブログの管理者が確認するまで公開されません。