我正在搜索一个库(Apache / BSD / EPL许可),使用\ u将本机文本转换为ASCII,用于ASCII中不可用的字符(基本上是java.util.Properties所做的)。
我看了一下,似乎没有任何现成的库。我找到了:
是否有人知道上述许可证下的图书馆?
答案 0 :(得分: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);
}
}
另外org.apache.commons:commons-lang包含StringEscapeUtils.escapeJava(),它可以转义并转换原生字符串。
答案 1 :(得分:3)
尝试使用Apache commons-lang的这段代码:
StringEscapeUtils.escapeJava("ایران زیبای من");
StringEscapeUtils.unescapeJava("\u0627\u06CC\u0631\u0627\u0646 \u0632\u06CC\u0628\u0627\u06CC \u0645\u0646");