Доброго времени суток. Вобщем вопрос такой.
Есть файл содержащий подобные строчки.
1.
\u0420\u2014\u0420\xb0\u0420\u0491\u0420\xb0\u0421\u2021\u0420\u0451 \u0420\u0458\u0420\u0405\u0420\xb5
Тоже самое на тарабарщине
2.
Задачи РјРЅР
То же самое по русски
3.
Задачи мне
Внимание вопрос. Как сконвертировать 1 в 3 программно. Знаю что первый символ будет 1 \u0417 .
Всем спасибо
Здравствуйте, lollipop, Вы писали:
L> Внимание вопрос. Как сконвертировать 1 в 3 программно.
По шагам. Сначала сконвертировать первое во второе. Например, \u0420 — один char с шестнадцатеричным кодом 0420. Аналогично и с \x, только там двузначные числа. Может быть, есть еще какие-то последовательности вроде \n и \\, их тоже нужно заменять на соответствующие символы. Все остальные символы — так и идут в результат.
Затем сконвертировать второе в третье, например, так:
private static String c2t3(String s2) throws UnsupportedEncodingException {
return new String(s2.getBytes("CP1251"), "UTF-8");
}
Здравствуйте, lollipop, Вы писали:
L> Внимание вопрос. Как сконвертировать 1 в 3 программно. Знаю что первый символ будет 1 \u0417 .
2 в 3:
(cp1251 в юникод)
println new String("Задачи РјРЅР".getBytes("CP1251"), "UTF-8")
1 в 2:
(чары в стринги)
char c1 = (char) Integer.parseInt("0420", 16)
println new String(c1).getBytes("CP1251")
char c2 = (char) Integer.parseInt("b0", 16)
println new String(c2).getBytes("CP1251")
может есть и какие автоматические способы, но я не искал