Java Строка Unicode Значение - PullRequest
13 голосов
/ 20 апреля 2011

Как я могу получить значение Unicode строки в Java?

Например, если строка "Привет", мне нужно что-то вроде \ uXXXX \ uXXXX

Ответы [ 2 ]

19 голосов
/ 11 февраля 2013

Некоторые символы Юникода охватывают два символа Java.Цитата из http://docs.oracle.com/javase/tutorial/i18n/text/unicode.html:

Символы со значениями, которые находятся за пределами 16-битного диапазона и находятся в диапазоне от 0x10000 до 0x10FFFF, называются дополнительными символами и определяются какпара значений char.

правильный способ избежать non-ascii:

private static String escapeNonAscii(String str) {

  StringBuilder retStr = new StringBuilder();
  for(int i=0; i<str.length(); i++) {
    int cp = Character.codePointAt(str, i);
    int charCount = Character.charCount(cp);
    if (charCount > 1) {
      i += charCount - 1; // 2.
      if (i >= str.length()) {
        throw new IllegalArgumentException("truncated unexpectedly");
      }
    }

    if (cp < 128) {
      retStr.appendCodePoint(cp);
    } else {
      retStr.append(String.format("\\u%x", cp));
    }
  }
  return retStr.toString();
}
12 голосов
/ 20 апреля 2011

Этот метод преобразует произвольное String в ASCII-безопасное представление для использования в исходном коде Java (например, в файлах свойств):

public String escapeUnicode(String input) {
  StringBuilder b = new StringBuilder(input.length());
  Formatter f = new Formatter(b);
  for (char c : input.toCharArray()) {
    if (c < 128) {
      b.append(c);
    } else {
      f.format("\\u%04x", (int) c);
    }
  }
  return b.toString();
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...