Подтвердить что ты не робот

Значение строки Java Unicode

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

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

4b9b3361

Ответ 1

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

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

правильный способ избежать не-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();
}

Ответ 2

Этот метод преобразует произвольное 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();
}