用于转换native2ascii的库,反之亦然

Sas*_*ogt 6 java ascii

我正在搜索一个库(Apache/BSD/EPL许可),使用\ u将本机文本转换为ASCII,用于ASCII中不可用的字符(基本上是java.util.Properties所做的).

我看了一下,似乎没有任何现成的库.我发现:

是否有人知道上述许可证下的图书馆?

And*_*eas 11

您可以使用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);
 }
}
Run Code Online (Sandbox Code Playgroud)

另外org.apache.commons:commons-lang包含StringEscapeUtils.escapeJava(),它可以转义和转换原生字符串.

  • 您可以使用来自apache commons的StringEscapeUtils:System.out.println(StringEscapeUtils.escapeJava("Halloäöü")); 还有一个相应的unescapeJava.可以在这里找到:http://commons.apache.org/lang/ (3认同)

Too*_*Jam 5

试试 Apache commons-lang 中的这段代码:

StringEscapeUtils.escapeJava("????? ????? ??");
StringEscapeUtils.unescapeJava("\u0627\u06CC\u0631\u0627\u0646 \u0632\u06CC\u0628\u0627\u06CC \u0645\u0646");
Run Code Online (Sandbox Code Playgroud)

  • 它还会转义引号,这可能是一种不需要的行为。 (2认同)