Я пытаюсь определить, будет ли собственный метод правильно декодировать массив байтов с учетом разных кодировок. Следующий код - это то, как я подошел к генерации данных для кодирования.Понимание кодировки Java
public class Encoding {
static byte[] VALUES = {(byte) 0x00, ..... (byte) 0xFF};
static String[] ENCODING = {"Windows-1252","ISO-8859-1"};
public static void main(String[] args) throws UnsupportedEncodingException {
for(String encode : ENCODING) {
for(byte value : VALUES) {
byte[] inputByte = new byte[]{value};
String input = new String(inputByte, encode);
String houseInput = houseMethod(input.getBytes());
}
}
}
}
Вопрос в том, когда приходит вызов метода дома, какая кодировка будет отправлена на этот метод? Я понимаю, когда Java хранит String, он преобразует ее в UTF-16. Поэтому, когда я отправляю Input.getBytes(), он отправляет байт кодировки UTF-16 или схему кодирования, которую я установил, когда я создал новую строку? Я предполагаю, что это UTF-16, но я не уверен. Должен ли дом метод быть ???
houseMethod(input.getBytes(encode))
Байты не имеют кодировки; символы и строки имеют один – fantaghirocco
@fantaghirocco. См. Https://docs.oracle.com/javase/tutorial/i18n/text/string.html defaultBytes vs utf8Bytes –
@fantaghirocco Нет, символы и строки в Java не имеют кодировки. Кодировка - это то, что вам нужно ** конвертировать ** между символами/строками и байтами. –