我正在寻找一个库(Apache/BSD/EPL 许可)使用\u 将 native 文本转换为 ASCII,用于 ASCII 中不可用的字符(基本上是 java.util.Properties 所做的)。
我看了一下,似乎没有现成的库。我发现:
- JDK,tools.jar,native2ascii
- Properties.saveConvert()(私有(private)方法)
- http://www.koders.com/java/fidD26ED81BEBE41932C405904AD53AEE8459BB8509.aspx (GPL)
有人知道上述许可下的图书馆吗?
最佳答案
您可以使用 CharsetEncoder 来做到这一点。您必须使用正确的 unicode 编码来阅读“ native ”文本。比您可以使用“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() 可以转义和取消转义原生字符串。
关于java - 用于转换 native2ascii 的库,反之亦然,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10008989/