2012-04-26 4 views
15

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

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

Locale.ROOTは、おそらくも安全な選択であるロケールの言語/国ニュートラルロケールに依存する操作

Locale.ENGLISHであると述べています。

+0

"some ASCII text":あなたは本当にASCIIテキストを意味しますか?それとも、あなたは「何かのテキスト」を意味しますか? – Raedwald

+0

私はASCIIを意味しました。私はASCII以外の文字を使用していないことを暗示しようとしていました。私はその問題について明確にした。 – mchr

答えて

5

はい、Locale.ENGLISHは、特別なケーシングルールやENGLISHのすべての7ビットASCII文字は含まれていないため、プログラミング言語の識別子やURL部分などの大文字小文字の操作には安全な選択です。case-convert to 7-bit ASCII文字。

これは他のすべてのロケールでは当てはまりません。トルコ語では、「I」と「i」の文字は大文字と小文字に変換されません。

"Dotted and dotless I"は説明する:

ラテンアルファベットの変種であるトルコのアルファベットは、文字I、1の点線およびその他のドットなしの二つの異なるバージョンが含まれています。

ユニコードでは、U + 0131は小文字のドットなしi(ı)です。 U + 0130(İ)は大文字のiで、ドットが付きます。 ISO-8859-9はそれぞれ0xFDと0xDDの位置にあります。通常のタイポグラフィでは、小文字のiが他の発音区別記号と組み合わされているとき、ドットは一般に分音記号が追加される前に削除されます。しかし、Unicodeは、論理的には変更されている通常の点線のi文字であるため、点線の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 

に維持されている...

+0

"これは他のすべてのロケールでは当てはまりません"。これはASCIIを使用できません。 – Raedwald

+0

どのような状況でROOTロケールを使用しますか?私はそれを使用して、特別なケースの折り畳みを適用したくないということを意味しています。 – mchr

+0

@Raedwald、私は理解しているか分からない。あなたのコメントを拡大してください。 –

2

私はいくつかのASCIIテキストを小文字にして、これがあることを確認したいのです場合どのロケールを使用すべきですか?

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

+0

OPには「何らかのASCIIテキスト」と表示されます。 ASCIIは英語のテキストのみに役立つため、「期待通りに」は英語で期待通りに意味する必要があります。 – Raedwald

関連する問題