你可以用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:公地郎包含StringEscapeUtils.escapeJava(),它可以逃脱,未逸出本地字符串。
THX,这是另一种方法。我仍然无法相信这在任何其他可用的图书馆中都没有完成。此外,另一方面也需要考虑。 – 2012-04-04 11:32:23
你可以使用从Apache公共的StringEscapeUtils:System.out.println(StringEscapeUtils.escapeJava(“Halloäöü”));还有一个相应的unescapeJava。可以在这里找到:http://commons.apache.org/lang/ – Andreas 2012-04-04 11:42:43
谢谢你,安德烈亚斯。 StringEscapeUtils做了我正在寻找的东西。在我看来,这对所提出的问题也是一个很好的答案。 – Calon 2013-11-29 10:17:58