2012-04-04 87 views
6

我正在尋找一個庫(Apache/BSD/EPL許可),以使用\ u爲ASCII字符(基本上是java.util.Properties的作用)使用\ u將本機文本轉換爲ASCII。 。用於轉換native2ascii和反之亦然的庫

我有一個看起來似乎沒有任何現成的圖書館。我發現:

是任何人都知道一個庫下的上述規定許可證?

回答

10

你可以用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(),它可以逃脫,未逸出本地字符串。

+0

THX,這是另一種方法。我仍然無法相信這在任何其他可用的圖書館中都沒有完成。此外,另一方面也需要考慮。 – 2012-04-04 11:32:23

+3

你可以使用從Apache公共的StringEscapeUtils:System.out.println(StringEscapeUtils.escapeJava(「Halloäöü」));還有一個相應的unescapeJava。可以在這裏找到:http://commons.apache.org/lang/ – Andreas 2012-04-04 11:42:43

+1

謝謝你,安德烈亞斯。 StringEscapeUtils做了我正在尋找的東西。在我看來,這對所提出的問題也是一個很好的答案。 – Calon 2013-11-29 10:17:58

3

嘗試這段代碼Apache的公地郎鹹平:

StringEscapeUtils.escapeJava("ایران زیبای من"); 
StringEscapeUtils.unescapeJava("\u0627\u06CC\u0631\u0627\u0646 \u0632\u06CC\u0628\u0627\u06CC \u0645\u0646"); 
相關問題