Библиотека для преобразования native2ascii и наоборот

Я ищу библиотеку (Apache / BSD / EPL licensed) для преобразования собственного текста в ASCII, используя u для символов, недоступных в ASCII (в основном, что java.утиль.Свойства делает).

Я посмотрел, и, похоже,нет доступных библиотек. Я нашел:

кто-нибудь знает о библиотеке под вышеуказанными лицензиями?

2 ответов


вы можете сделать это с помощью CharsetEncoder. Вы должны прочитать "родной" текст с правильной кодировкой в unicode. Чем вы можете использовать "US-ASCII" -encoder для обнаружения, какие символы должны быть переведены в Unicode escapes.

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.апаш.commons: commons-lang содержит StringEscapeUtils.escapeJava (), который может экранировать и unescape собственные строки.


попробуйте этот фрагмент кода из Apache commons-lang:

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