簡體   English   中英

如何從Java中的原始utf格式獲取真實字符

[英]How to get the real characters from its raw utf format in Java

我有一些這樣編碼的中文字符:

String b = "\\u91d1\\u5143\\u6bd4\\u8054\\u6210\\u957f\\u52a8\\u529b";

如何將字符串b更改為實字符,我發現在控制台中將其輸出時可以顯示以下c,那么問題是如何將字符串b更改為c?

String c = "\u91d1\u5143\u6bd4\u8054\u6210\u957f\u52a8\u529b";

如果字符串中確實包含雙斜杠,那么您將不得不手動掃描字符串,將每個“ \\ uXXXX”序列解碼並替換為其實際的UTF-16表示形式。 例如(未測試):

StringBuilder buf = new StringBuilder();
char c[2];
for (int i = 0; i < b.length(); i += 7)
{
  int tmp = Integer.parseInt(b.substring(i+3, i+7), 16);
  if (tmp < 0x1000)
  {
    c[0] = (char) tmp;
    c[1] = 0;
  }
  else
  {
    tmp -= 0x10000;
    c[0] = (0xD800 | ((tmp & 0xFFC00) >> 10));
    c[1] = (0xDC00 | (tmp & 0x3FF));
  }
  buf.append(c, 2);
}
b = buf.ToString();

有人發布了一個棘手的解決方案,但對我來說似乎很有益:

    b="abc="+b;
    Properties props = new Properties();
    props.load(new StringReader(b));
    b=props.getProperty("abc");
    System.out.println(b);

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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