图书馆的native2ascii转换,反之亦然(Library for converting nat

2019-06-23 10:24发布

我在寻找一个库(阿帕奇/ BSD / EPL行货)使用\ u代表在ASCII(java.util.Properties确实基本上是什么)没有的字符原生文本ASCII转换。

我当时一看,有不似乎是任何现成可用的库。 我发现:

  • JDK,tools.jar,此时的native2ascii
  • Properties.saveConvert()(私有方法)
  • http://www.koders.com/java/fidD26ED81BEBE41932C405904AD53AEE8459BB8509.aspx (GPL)

是上述许可下任何人都知道一个图书馆的?

Answer 1:

你可以用一个CharsetEncoder做到这一点。 你必须阅读与正确的编码为Unicode的“天然”的文本。 比你可以用一个“美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(),它可以逃脱,未逸出本地字符串。



Answer 2:

试试这一件来自Apache的公共浪代码:

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


文章来源: Library for converting native2ascii and vice versa
标签: java ascii