[英]How can I convert a String in ASCII(Unicode Escaped) to Unicode(UTF-8) if I am reading from a file?
[英]Convert UTF-8 Unicode string to ASCII Unicode escaped String
我需要將unicode字符串轉換為具有以unicode編碼的非ascii字符的字符串。 例如,字符串“漢字Max”應顯示為“ \\ u6F22 \\ u5B57 Max”。
我試過的
的不同組合
新的String(sourceString.getBytes(encoding1),encoding2)
Apache StringEscapeUtils也會轉義ascii字符,例如雙引號
StringEscapeUtils.escapeJava(源代碼)
有沒有一種簡單的方法來編碼這樣的字符串? 理想情況下,僅應使用Java 6 SE或Apache Commons來獲得所需的結果。
這是喬恩·斯基特(Jon Skeet)在評論中想到的簡單代碼:
final String in = "šđčćasdf";
final StringBuilder out = new StringBuilder();
for (int i = 0; i < in.length(); i++) {
final char ch = in.charAt(i);
if (ch <= 127) out.append(ch);
else out.append("\\u").append(String.format("%04x", (int)ch));
}
System.out.println(out.toString());
正如喬恩所說,代理對將被表示為一對
\\u\u003c/code>轉義。
這會將所有非ASCII字符轉義為Unicode轉義序列。
import static java.lang.String.format;
import com.google.common.escape.CharEscaper;
public class NonAsciiUnicodeEscaper extends CharEscaper
{
@Override
protected char[] escape(final char c)
{
if (c >= 32 && c <= 127) { return new char[]{c}; }
else { return format("\\u%04x", (int) c).toCharArray(); }
}
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.