Tamam dönüştürülmesi gerekir, bu yüzden StringEscapeUtils
koduna bakarsak, biz escapeJava
method here görebilirsiniz:
public static final String escapeJava(final String input) {
return ESCAPE_JAVA.translate(input);
}
Hangi ESCAPE_JAVA
which is defined here
kullanıyor
public static final CharSequenceTranslator ESCAPE_JAVA =
new LookupTranslator(
new String[][] {
{"\"", "\\\""},
{"\\", "\\\\"},
}).with(
new LookupTranslator(EntityArrays.JAVA_CTRL_CHARS_ESCAPE())
).with(
JavaUnicodeEscaper.outsideOf(32, 0x7f)
);
Yani,
Yani biz kendi ... Verilen girişinizi dize dönebilirsiniz ... bu size istenmeyen kaçışa veriyor bu son bit olduğunu düşünüyorum:
def input = '''Los
niños'''
Biz sınıfları içe ve kendi LookupTranslator
oluşturmak (dan parçalamakla ilk bit commons-lang) olabilir:
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())
)
ve sonra, biz kaçabilir yo ur giriş String, ve sonucu kontrol beklendiği gibi:
assert translator.translate(input) == 'Los \\nniños'
sen (tabii ki ancak yüksek olmayan kod karakter) 32 altına unicode karakter için kaçan gerekiyorsa, sizin çevirmen değiştirebilirsiniz:
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))
Bütün bunlar ben kullandığınız sürüm olduğunu varsayalım commons-lang3 ... sadece uygun bir kodlama seçemezsiniz neden ... anlamıyorum
den? –
@tim_yates, varsayılanları UTF-8 olarak kullanıyorum. Mümkünse bunu yapmayı tercih ederim ama bunun için çalışacak bir kodlama öneriniz var mı? Teşekkürler! – snarkblurb
Bu kodlamayı neden yaptığınızı daha iyi anlatabilir misiniz? –