Учу ява. При написание потребовалась перекодировать полученную строку. После того как я почитал об этом несколько постов и статей понял что в ява строки не имеют понятие кодировки и если хочешь изменить нужно из строки сделать байтовый массив, в массиве изменить кодировку и назад в строку. Получилось что то типа такого:
String data = "Текст который получаю";
data = new String (arr.getBytes ("utf8"), "utf8" );
Но после услышал критики что это типа не правильно. И вот на какие вопросы я хотел бы услышать ответ: 1. Правильно ли я все понял? 2. Правильно ли я реализую это в коде? Заранее спасибо
Кодировка это просто таблица, где каждой букве соответсвует число (помним же, что компьютер хранит только числа?). Поэтому кодировка имеет смысл только в том случае когда массив чисел (byte[], например) нам нужно превратить в строку и нужно понимать с какой буквой ассоциировать каждое число (ну или в обратную сторону).
Таким образом кодировка имеет смысл только при преобразовании в массив байтов или наоборот. Ваша запись в сокет это оно и есть.
Грубо говоря вы прочитали из сокета массив байтов:
byte[] data = socket.read();
Дальше нам нужно этои числа интрпретировать как строку, с правильной таблицей (кодировкой). В этом случае кодировка показывают в какую букву будет преобразовано каждое число:
new String(data, "UTF-8");
И наоборот у нас есть строка, и мы хотим преобразовать её к массиву байтов, мы указываем кодировку, то бишь в какое число будет преобразована каждая буковка:
String data = "abc";
byte[] array = data.getBytes("UTF-8");
socket.write(array);
Если у вас проблемы с русскими буквами - значит скорее всего указали неправильную кодировку. Какую нужно указывать - нужно разбирать что вам собственно приходит из сокета.
Виртуальный выделенный сервер (VDS) становится отличным выбором
Error:Execution failed for task ':app:transformDexArchiveWithExternalLibsDexMergerForDebug'
Есть задачаМы можем делать следующие действия:
Есть код, который передает отмеченные позиции в listView в другую активность: