パスワードを忘れた? アカウント作成
451198 journal

kubotaの日記: locale.alias 2

日記 by kubota

Linux システムにおいて、locale.alias というファイルは、GNU libc にも含まれるし、X Window System にも含まれる。これらのファイルには、ASCII ではない文字が含まれている。fran0xe7ais と bokm0xe5l のふたつだ。

0xe7 と 0xe5 は、ISO-8859-1 であると解釈すると、ç と å と解釈され、意味のある単語となる。しかし、ロケールを決定する前にそれらの文字を ISO-8859-1 の意味で使うのは、誤った使いかただし、場合によっては使用できない。それに、こんなことをされたら locale.alias ファイルを編集できなくなるじゃないか。

というようなことを、i18n@xfree86 ML に流したのだが、ふだん Unicode! とか叫んでいる人々も含め、まったく反応がない。

ついでに、bug-glibc@gnu.org にも、今日、同様なメールを送ったが、Ulrich Drepper さんから、なおすつもりはない、というような返事がやってきた。この人、わけわからないことを言ってるんだが、どうしたもんだろう。/etc/locale.alias はテキストファイルだけどエンコーディングは特定されてなくて単なるバイトシーケンスなんだそうだ。それはふつうバイナリファイルだと思うんだが、そう指摘したら、「改行」で区切られているからテキストファイルだとさ。しょせん 8 ビットエンコーディングな人々の国際化に対する考え方はこの程度のものなのか、と思ってしまった。

実は前ふりがあって、このへんから始まる長~い議論があるのだが、これを受けて Debian パッケージに対してバグ報告したのだが、直すつもりないし、なんて冷たくあしらわれたということがあった。

この議論は賞味期限が切れたので、アーカイブ化されています。 新たにコメントを付けることはできません。
  • locale.alias (スコア:2, 興味深い)

    by numa (4467) on 2002年01月23日 18時11分 (#56629) ホームページ 日記

    そういう場合,次のような対策を取りましょう.

    • "日本語_日本.シフト符号化表現" というロケールをでっち上げ,「俺はこれを使っているから,登録してくれ」とか言ってごねる.もちろん,その文字列自体のエンコーディングは Shift_JIS で.

      これは当然,嫌がらせですが,ISO/IEC 8859-1 の名前が受け入れ可能で,Shift_JIS が受け入れ不可能だとは言えないはず.

    • 「POSIX では,ロケール名は Portable Character Set の文字でなければならない」と主張する.

      根拠は次の通り.

      1. ISO/IEC 9945-2 あるいは Single UNIX Specification の, localedef ユーティリティの部分を読むと,"Environment Variables" の節の,LC_CTYPE の項に,「localedef ユーティリティの入力データの解釈は POSIX ロケールで行う」旨の記述がある.たとえば,SUS v2 だと:
        This variable has no affect on the processing of localedef input data; the POSIX locale is used for this purpose, regardless of the value of this variable.
      2. 次に,同じ規格の localedef の入力ファイルの規定を読みましょう.

         
        • Character Set Description File の節で規定されている charmap ファイルには <code_set_name> という宣言があって,ここにコードセット名を記述します.たとえば次のように:
          <code_set_name> eucJP
        • Locale Definition の節で規定されているロケール定義ファイルの形式には copy というキーワードが規定されていて,LC_* のカテゴリごとに,他のロケールの定義を引用することができます.たとえば,次のように:
          LC_MONETARY
          copy fr_FR
          END LC_MONETARY
      3. さて,上記の文字列がすべて 「POSIX ロケールで解釈される」のですから,ロケール名が (「名前空間」として) 複数エンコーディングの混在ではありえないのはわかっていただけると思います. また,もし「ISO/IEC 8859-1 の名前だけは許す」という 話になれば, 今度は「POSIX ロケールでの文字の解釈は ISO/IEC 8859-1 でやるのか.本当にそれでいいのか.」という話にもっていけば, Unicoder どもが騒ぎ出すことになるでしょう.

    まあ,前半は冗談ですが,後半はけっこうマジです.

typodupeerror

アレゲは一日にしてならず -- アレゲ見習い

読み込み中...