LC_COLLATEは文字範囲に影響しますか?
照合順序LC_COLLATEは、個々の文字の並べ替え順序だけでなく、文字範囲の意味も定義します。それともそうですか?次のスニペットを検討してください。 unset LANGUAGE LC_ALL echo B | LC_COLLATE=en_US grep '[a-z]' 直感的にBはにない[a-z]ので、何も出力されません。それがUbuntu 8.04または10.04で起こります。しかし、Debianのレニーやスクイズを実行しているいくつかのマシン上で、B範囲があるため、発見されたa-zの間だすべてのものが含まaとz大文字を含む照合順序で、BスルーをZ。 テストされたすべてのシステムには、en_USロケールが生成されています。また、ロケールを変更しようとしました:B上記と一致するマシンでは、{en_{AU,CA,GB,IE,US},fr_FR,it_IT,es_ES,de_DE}{iso8859-1,iso8859-15,utf-8}日本語(使用可能なエンコーディング)およびC/ を除くすべての使用可能なロケール(ほとんどがラテン語ベース:、中国語ロケールも)で同じことが起こりますPOSIX。 ASCIIを超える場合、正規表現で文字範囲は何を意味しますか?一部のDebianインストールと他のDebianインストールとUbuntuの間に違いがあるのはなぜですか?他のシステムはどのように動作しますか?誰が正しいのか、誰に対してバグを報告すべきか? (主にGNU libcベースのシステム[a-z]でのen_USロケールなどの文字範囲の動作について具体的に尋ねていることに注意してください。小文字またはASCII小文字の一致方法は尋ねていません。) 2台のDebianマシンで、1台Bが入っ[a-z]ているものと入っていないものの出力LC_COLLATE=en_US locale -k LC_COLLATEは collate-nrules=4 collate-rulesets="" collate-symb-hash-sizemb=1 collate-codeset="ISO-8859-1" そしての出力LC_COLLATE=en_US.utf8 locale -k LC_COLLATEは collate-nrules=4 collate-rulesets="" collate-symb-hash-sizemb=2039 collate-codeset="UTF-8"