Javaでは、String#toLowerCase
メソッドはデフォルトのシステムLocale
を使用して、小文字の処理方法を決定します。ASCIIテキストを小文字にしていて、これが期待どおりに処理されることを確認したい場合は、どのロケールを使用する必要がありますか?
編集:私は主に、スキーマ内のテーブル名や列名などの識別子のプログラミングに関心があります。そういうわけで、私は英語の小文字を適用して欲しいのです。
Locale.ROOT
ロケール依存操作の言語/国に依存しないロケールであると述べている
Locale.ENGLISH
おそらく安全な選択でもあるでしょう。
はい。Locale.ENGLISH
特別な大文字と小文字の規則や、英語の大文字と小文字のすべての7ビットASCII文字が7ビットASCII文字に変換されるため、プログラミング言語識別子やURLパーツなどのケース操作には安全な選択です。
これは他のすべてのロケールには当てはまりません。トルコ語では、「I」と「i」の文字の大文字と小文字は相互に変換されません。
「ドットとドットのない私」は説明します:
ラテン系アルファベットの変形であるトルコ語のアルファベットには、文字Iの2つの異なるバージョンが含まれています。
Unicodeでは、U + 0131は小文字のドットなしi(ı)です。U + 0130(İ)はドット付きの大文字iです。ISO-8859-9では、それぞれ0xFDおよび0xDDの位置にあります。通常のタイポグラフィでは、小文字のiを他の発音区別符号と組み合わせると、通常、発音区別符号が追加される前にドットが削除されます。ただし、変更されるのは論理的には通常のドット付きi文字であるため、Unicodeは同等の結合シーケンスをドット付きiを含むものとしてリストします。
ほとんどのUnicodeソフトウェアは、ıをIに、İをiに小文字に変換しますが、トルコ語用に特別に設定されていない限り、Iをiに小文字に変換し、iをIに大文字に変換します。したがって、大文字と小文字、またはその逆で文字が変更されます。
特別な例外のリストは、http://unicode.org/Public/UNIDATA/SpecialCasing.txtにあります。
# ================================================================================ # Turkish and Azeri # I and i-dotless; I-dot and i are case pairs in Turkish and Azeri # The following rules handle those cases. 0130; 0069; 0130; 0130; tr; # LATIN CAPITAL LETTER I WITH DOT ABOVE 0130; 0069; 0130; 0130; az; # LATIN CAPITAL LETTER I WITH DOT ABOVE # When lowercasing, remove dot_above in the sequence I + dot_above, which will turn into i. # This matches the behavior of the canonically equivalent I-dot_above 0307; ; 0307; 0307; tr After_I; # COMBINING DOT ABOVE 0307; ; 0307; 0307; az After_I; # COMBINING DOT ABOVE
...
この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。
侵害の場合は、連絡してください[email protected]
コメントを追加