これはCharsetEncoderで行うことができます。ユニコードに正しいエンコーディングで「ネイティブ」テキストを読み込まなければなりません。 「US-ASCII」エンコーダを使用して検出するよりも、Unicodeエスケープに変換する文字を使用することができます。
import java.nio.charset.Charset;
import java.nio.charset.CharsetEncoder;
import org.junit.Test;
public class EncodeToEscapes {
@Test
public void testEncoding() {
final String src = "Hallo äöü"; // this has to be read with the right encoding
final CharsetEncoder asciiEncoder = Charset.forName("US-ASCII").newEncoder();
final StringBuilder result = new StringBuilder();
for (final Character character : src.toCharArray()) {
if (asciiEncoder.canEncode(character)) {
result.append(character);
} else {
result.append("\\u");
result.append(Integer.toHexString(0x10000 | character).substring(1).toUpperCase());
}
}
System.out.println(result);
}
}
さらにorg.apache.commons:コモンズ-langは脱出し、ネイティブの文字列をエスケープ解除することができStringEscapeUtils.escapeJavaを()が含まれています。
Thxを、それはまた別のアプローチです。私はまだこれが他の利用可能なライブラリでは行われていないとは考えていません。加えて、他の方法も考慮する。 –
あなたは、ApacheのコモンからStringEscapeUtilsを使用することができます:System.out.println(StringEscapeUtils.escapeJava( "Halloäöü"));対応するunescapeJavaもあります。ここで見つけることができます:http://commons.apache.org/lang/ – Andreas
ありがとう、アンドレアス。 StringEscapeUtilsは私が探していたものとまったく同じでした。これは、提起された質問に対する良い答えになると私には思われます。 – Calon