Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Java: Общие вопросы > конвертер: "русский текст" в unicode


Автор: savage_fx 25.2.2009, 21:49
как конвертировать "русский текст" в unicode

например слово "новая запись" должна быть таком виде "\u041D\u043E\u0432\u0430\u044F \u0437\u0430\u043F\u0438\u0441\u044C"


и еще:

1) я умею пользоваться поиском по форуму и googlо-м

2) мне нужен самый простой и рабочий способ перевести одну строку во вторую
(есть строка a, нужно получить строку b)

3) если кто на самом деле знает - приведите пример рабочего и законченного кода

С уважением, Алексей




Автор: LSD 25.2.2009, 22:52
В состав JDK входит утилита native2ascii которая умеет конвертировать файлы так как тебе надо.

Автор: ShellRaiser 26.2.2009, 13:29
Код

String qwe="йцу";
String asd = new String(qwe,"UTF-8");

Автор: math64 26.2.2009, 16:03
Если это пребразование нужно делать из java-кода, см. исходники методы saveConvert(String theString, boolean escapeSpace) и loadConvert (String theString) класса java.util.Properties - к сожалению они private и напрямую ими воспользоваться нельзя.

Автор: Samotnik 26.2.2009, 16:29
нэйтивтуаски как раз для этого предназначена

Автор: LSD 26.2.2009, 17:03
Код

public class Test
{
  private static final char[] HEX_DIGITS = {'0', '1', '2', '3', '4', '5', '6', '7', '8', '9', 'A', 'B', 'C', 'D', 'E', 'F'};
  private static final char ASCII_LOWER = 0x20;
  private static final char ASCII_UPPER = 0x7F;

  public static void main(String[] args) throws Exception
  {
    System.out.println(convert("новая запись"));
  }

  public static String convert(String s)
  {
    int len = s.length();
    StringBuilder buffer = new StringBuilder(len);
    for(int i = 0; i < len; i++)
    {
      char c = s.charAt(i);
      if(c >= ASCII_LOWER && c <= ASCII_UPPER)
      {
        buffer.append(c);
      }
      else
      {
        appendEscape(c, buffer);
      }
    }
    return buffer.toString();
  }

  private static void appendEscape(char c, StringBuilder buffer)
  {
    buffer.append('\\').append('u');
    char d0 = HEX_DIGITS[0x000F & c];
    c >>>= 4;
    char d1 = HEX_DIGITS[0x000F & c];
    c >>>= 4;
    char d2 = HEX_DIGITS[0x000F & c];
    c >>>= 4;
    char d3 = HEX_DIGITS[0x000F & c];
    buffer.append(d3).append(d2).append(d1).append(d0);
  }
}

Автор: savage_fx 26.2.2009, 18:12
Большое спасибо LSD за толковый простой и самое главное - работаюший код.

Уверен, что этот пример много кому понадобиться

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)