簡體   English   中英

將UTF-8 Unicode字符串轉換為ASCII Unicode轉義的字符串

[英]Convert UTF-8 Unicode string to ASCII Unicode escaped String

我需要將unicode字符串轉換為具有以unicode編碼的非ascii字符的字符串。 例如,字符串“漢字Max”應顯示為“ \\ u6F22 \\ u5B57 Max”。

我試過的

  1. 的不同組合

    新的String(sourceString.getBytes(encoding1),encoding2)

  2. 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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM