1

ルール"NFD; [:Nonspacing Mark:] Remove; NFC"ICUTransliteratorデモにフィードすると、文字Ø\u00d8== LATIN CAPITAL LETTER O WITH STROKE)はそのままになります(つまり、STROKEは削除されません)。

非マーキングスペースのリスト(Category )で、 ()または( )に類似したMn名前の何かが見つかりません。 COMBINING DIAGONAL STROKECOMBINING SHORT STROKE OVERLAY\u0335COMBINING LONG STROKE OVERLAY\u0336

ただし、COMBINING SHORT SOLIDUS OVERLAY\u0337)とCOMBINING LONG SOLIDUS OVERLAY\u0338)は見つかります。oそれらは似ているように見えますが、とと組み合わせると、ブラウザで同じくらい太い線をレンダリングしますO

アクセスしたUnicodeデータは\u00d8、その文字の分解を提供しません。

同時に、ICUコレーターデモは、プライマリ(レベル= 1 =ベースレター)コレーターを使用して、、、、、のそれぞれを同じコードポイントに照合しøますoØOo\u0337O\u0338

これは、デモで使用されるCollat​​orのロケールが、Unicode仕様がサイレントである方法でベース文字を識別するように設定されていることを意味しますか?

LATIN [CAPITAL, SMALL] LETTER *もしそうなら、音訳の文字からストロークを取り除きたい場合、カスタムのルールベースの音訳をする必要がありますか?

4

3 に答える 3

2

以下を参照してください。ラテン語-ASCIIトランスリテーターはICU4.6に入りました。お気づきのように、照合デモでは、ベース文字の違いとしてOとスラッシュOを使用するUCA / CLDR調整を使用します。これは、分解があるかどうかと同じ質問ではありません。「w」も「v+v」に分解されません。分解は、2つの異なる方法で文字を表す既存のエンコーディングがあったかどうかと関係があります。

于 2011-07-29T00:09:02.803 に答える
1

はい。何らかの理由で、文字にØは分解がないため、手動で処理する必要があります。

于 2011-07-28T16:47:48.780 に答える
0

この変換replaceAllは、Øやその他の文字を削除する場合にも機能します。

String id = "Accents-Any;NFD;[:Nonspacing Mark:] Remove; NFC";
System.out.println(latin.replaceAll("[^\\w]",""));
于 2014-03-06T16:30:32.370 に答える