Преобразование в UTF-8 в Java - PullRequest
2 голосов
/ 08 марта 2012

У меня просто есть строка \u0130smail, и я хочу преобразовать ее в Исмаил, а также конвертировать

  \u0130 --> İ   
  \u00E7 --> ç

Я пытался

String str = "\u0130smail";
sysout(str); 

и это сработало, но всякий раз, когда я получаю строку "\u0130smail" из БД или интернета, это не дает правильного результата.

static String deneme(String string){
    String string2 = null;

    try {
        byte[] utf8 = string.getBytes("UTF-8");
        string2 = new String(utf8, "UTF-8");
    } catch (UnsupportedEncodingException e) {
    }
    return string2;
}

тоже не работал.

Ответы [ 2 ]

3 голосов
/ 08 марта 2012

Строки "\u0130smail" и "İsmail" абсолютно одинаковы с точки зрения языка. Если вы имеете в виду, что вы получаете строку "\\u0130smail" (обратите внимание, что я избежал обратной косой черты), то вам нужно будет найти шаблон кодовых точек Unicode и преобразовать их в обычные буквы Unicode или просто напечатать число, в зависимости от того, что вы необходимость. Регулярные выражения могут помочь вам в этом случае.

0 голосов
/ 08 марта 2012

Преобразование существующей строки в байты и обратно не поможет вам.Вам нужно посмотреть на точные символы в строке, которую вы получили - и выяснить, как вы их получили.

Я предлагаю вам распечатать целое значение каждого символа в строке как целое число (в идеале в шестнадцатеричном формате), чтобы точно узнать, что у вас есть ... затем проследить это как можно дальше, чтобы выяснить, что идет не так.

...