Библиотека для преобразования native2ascii и наоборот
Я ищу библиотеку (Apache / BSD / EPL licensed) для преобразования собственного текста в ASCII, используя u для символов, недоступных в ASCII (в основном, что java.утиль.Свойства делает).
Я посмотрел, и, похоже,нет доступных библиотек. Я нашел:
- JDK, инструменты.Джар,native2ascii
- свойства.saveConvert () (частная метод)
- http://www.koders.com/java/fidD26ED81BEBE41932C405904AD53AEE8459BB8509.aspx (GPL)
кто-нибудь знает о библиотеке под вышеуказанными лицензиями?
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");