Dlaczego ten nieudany test kończy się niepowodzeniem?Bajt Java [] do/z Konwersja ciągów
import org.junit.Assert;
import org.junit.Test;
import java.io.UnsupportedEncodingException;
public class TestBytes {
@Test
public void testBytes() throws UnsupportedEncodingException {
byte[] bytes = new byte[]{0, -121, -80, 116, -62};
String string = new String(bytes, "UTF-8");
byte[] bytes2 = string.getBytes("UTF-8");
System.out.print("bytes2: [");
for (byte b : bytes2) System.out.print(b + ", ");
System.out.print("]\n");
Assert.assertArrayEquals(bytes, bytes2);
}
}
Przypuszczam, że przychodzące tablica bajtów wyrównał wynik, ale jakoś, prawdopodobnie ze względu na fakt, że UTF-8 znaków trwać dwa bajty, tablica wynik różni się od tablicy przychodzących zarówno w treści i długości.
Proszę mnie oświecić.
Zwłaszcza kodowanie UTF-8 nie może reprezentować wszystkich sekwencji bajtów. –
Dzięki. Bardzo chciałbym przechowywać te bajty w łańcuchu. Czy są jakieś kodowania, które obsługują sekwencje _any_ bajtów, czy też muszę je reprezentować w ten sam sposób, w jaki wydrukowałem go w powyższym teście na jedną z nich? – eirirlar
Wypróbuj ISO-8859-1 konwertuje bajty na znaki 1 do 1 –