27

Java では、String#toLowerCaseメソッドはデフォルトのシステムを使用してLocale小文字の処理方法を決定します。一部の ASCII テキストを小文字に変換していて、これが期待どおりに処理されることを確認したい場合、どのロケールを使用すればよいですか?

編集:私は主に、スキーマ内のテーブル名や列名などのプログラミング識別子について心配しています。そのため、英語の小文字を適用したいと考えています。

Locale.ROOTロケールに依存する操作の言語/国に中立なロケールであることを示します

Locale.ENGLISHおそらく安全な選択でもあります。

4

2 に答える 2

17

はい、Locale.ENGLISHプログラミング言語の識別子や URL 部分などのケース操作には安全な選択です。これは、特別な大文字と小文字の規則がなく、すべての 7 ビット ASCII 文字が ENGLISH ケース変換で 7 ビット ASCII 文字に変換されるためです。

これは、他のすべてのロケールには当てはまりません。トルコ語では、「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 を大文字に変換します。したがって、大文字の後に小文字を使用するか、またはその逆を行うと、文字が変更されます。

特別な例外のリストは、 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

...

于 2012-04-26T15:48:51.940 に答える
3

一部の ASCII テキストを小文字に変換していて、これが期待どおりに処理されることを確認したい場合、どのロケールを使用すればよいですか?

それは、「期待どおり」が何を意味するかによって異なります。Locale を指定できるようにするポイントは、同じ文字を使用している場合でも、すべての言語で大文字/小文字が同じように機能するわけではないということです。したがって、あなたやあなたの顧客が住んでいるロケールを指定すると、おそらく期待どおりに機能します。

于 2012-04-26T15:52:14.777 に答える