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

标签 java ascii

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

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

有人知道上述许可下的图书馆吗?

最佳答案

您可以使用 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/

相关文章:

python - 如何在 Python < 3 中将 UTF-8 编码的文本打印到控制台?

python - 如何让我的 Python 解析以下文本?

c++ - 在 C++ 中优化十六进制到 Ascii 函数

java - 用@Inject 加载的类可以使用@EJB 吗?

java - 在线程 "main"java.lang.NoClassDefFoundError : org/hibernate/cache/spi/support/DomainDataRegionImpl中

java - 小程序中的 Swing 组件不工作

java - 使用 java 比较两个实体与 Set 内部

list - Erlang:如何避免列表被翻译成 ASCII 字符串?

java - 防止内部事务回滚外部事务

java - Bufferedreader 和通过 ASCII 编码的文件