你可以用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