-2

助けてください、データベースからのUnicode文字列(Oracleストアドプロシージャ=> Javaオブジェクトへのマッピング)をJSPページ(stuts1を使用)に出力する必要があります。これを使用しました:

String unicodeStr = myBean.getTitle();//return from database the unicode string (something like this : Uygulama g\u00fcvenli\u011fi ile).
String isoString = org.apache.commons.lang.StringEscapeUtils.escapeHtml(unicodeStr);

私の問題は、for each ( )unicodeStrが付属しているため、最初に が原因でUnicode 文字を検出できないことです。"\\""\"Uygulama g\\u00fcvenli\\u011fi ileStringEscapeUtils.escapeHtml"\u00fc""\"

を試しましたが、エスケープなしの文字列では が許可されていunicodeStr.replaceAll("\\","\")ないため、コンパイルできません。"\"

4

2 に答える 2

1

unicodeStr.replaceAll("\","\") を試しましたが、エスケープなしの文字列では "\" が許可されていないため、コンパイルできません。

次のように、二重のバックスラッシュを置き換えることができます。

System.out.println("Uygulama g\\u00fcvenli\\u011fi ile".replaceAll("\\\\\\\\","\\"));

そしてそれは得られます:

Uygulama g\u00fcvenli\u011fi ile

ここで説明を見つけることができます(正規表現、リテラル文字列、およびバックスラッシュの段落を参照):

リテラル Java 文字列では、バックスラッシュはエスケープ文字です。リテラル文字列「\」は単一のバックスラッシュです。正規表現では、バックスラッシュもエスケープ文字です。正規表現 \ は単一のバックスラッシュに一致します。Java 文字列としてのこの正規表現は、「\\」になります。そうです: 1 つのバックスラッシュに一致する 4 つのバックスラッシュ。

正規表現 \w は、単語の文字に一致します。Java 文字列として、これは「\w」と記述されます。

String.replaceAll() などのメソッドの置換文字列を Java コード内のリテラル Java 文字列として提供する場合、同じバックスラッシュの混乱が発生します。置換テキストでは、正規表現の一致を実際のドル記号またはバックスラッシュに置き換える場合は、ドル記号を \$ としてエンコードし、バックスラッシュを \ としてエンコードする必要があります。ただし、リテラル Java 文字列ではバックスラッシュもエスケープする必要があります。そのため、リテラル Java 文字列として記述した場合、置換テキスト内の単一のドル記号は "\$" になります。単一のバックスラッシュは "\\" になります。繰り返しますが、バックスラッシュを 1 つ挿入するには 4 つのバックスラッシュを使用します。

于 2013-05-16T13:57:07.640 に答える