您可以使用 CharsetEncoder 执行此操作。您必须使用正确的 unicode 编码阅读“本机”文本。您可以使用“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:commons-lang 包含 StringEscapeUtils.escapeJava() 可以转义和取消转义本机字符串。