[OK]をに変換する必要がありますどちらが使用されますかESCAPE_JAVA
which is defined here
public static final CharSequenceTranslator ESCAPE_JAVA =
new LookupTranslator(
new String[][] {
{"\"", "\\\""},
{"\\", "\\\\"},
}).with(
new LookupTranslator(EntityArrays.JAVA_CTRL_CHARS_ESCAPE())
).with(
JavaUnicodeEscaper.outsideOf(32, 0x7f)
);
だから、私は、だから我々は我々自身をロールバックすることができます
...それはあなたに望ましくないエスケープを与えている。この最後のビットだと思う...あなたの入力文字列を考える:
def input = '''Los
niños'''
我々クラスをインポートし、(コモンズ・ラングからの最初のビットをオフにリッピング)LookupTranslator
私たち自身を作成することができます。
import org.apache.commons.lang3.text.translate.EntityArrays
import org.apache.commons.lang3.text.translate.LookupTranslator
def translator = new LookupTranslator([["\"", "\\\""], ["\\", "\\\\"]] as String[][]).with(
new LookupTranslator(EntityArrays.JAVA_CTRL_CHARS_ESCAPE())
)
そして、私たちは、ヨーヨーを逃れることができます予想通りウル入力文字列、および結果をチェックは次のようになります。
assert translator.translate(input) == 'Los \\nniños'
あなたは32(しかし、明らかに、高くないコードの文字)以下のUnicode文字用のエスケープが必要な場合は、あなたがあなたのトランスレータを変更することができます。
import org.apache.commons.lang3.text.translate.EntityArrays
import org.apache.commons.lang3.text.translate.JavaUnicodeEscaper
import org.apache.commons.lang3.text.translate.LookupTranslator
def translator = new LookupTranslator([["\"", "\\\""], ["\\", "\\\\"]] as String[][]).with(
new LookupTranslator(EntityArrays.JAVA_CTRL_CHARS_ESCAPE())
).with(JavaUnicodeEscaper.below(32))
これらのすべてが
...コモンズ-lang3私はあなたが使用しているバージョンであると仮定しているからだけで適切なエンコードを選択しないで、なぜ私は...理解していませんか? –
@tim_yates私はUTF-8にデフォルトを使用しているフレームワークです。可能であればそれに固執したいと思いますが、このためにはエンコードの推奨がありますか?ありがとう! – snarkblurb
このエンコーディングをなぜ行うのか説明してもらえますか? –