Στη Java, έχω ένα String και θέλω να το κωδικοποιήσω ως πίνακα byte (σε UTF8 ή κάποια άλλη κωδικοποίηση). Εναλλακτικά, έχω έναν πίνακα byte (σε κάποια γνωστή κωδικοποίηση) και θέλω να τον μετατρέψω σε συμβολοσειρά Java. Πώς μπορώ να κάνω αυτές τις μετατροπές;
Μετατροπή από String σε byte[]:
String s = "some text here";
byte[] b = s.getBytes(StandardCharsets.UTF_8);
Μετατροπή από byte[] σε String:
byte[] b = {(byte) 99, (byte)97, (byte)116};
String s = new String(b, StandardCharsets.US_ASCII);
Θα πρέπει, φυσικά, να χρησιμοποιήσετε το σωστό όνομα κωδικοποίησης. Τα παραδείγματά μου χρησιμοποίησαν US-ASCII και UTF-8, τις δύο πιο κοινές κωδικοποιήσεις.
String original = "hello world";
byte[] utf8Bytes = original.getBytes("UTF-8");
Μπορείτε να μετατρέψετε απευθείας μέσω του κατασκευαστή String(byte[], String) και της μεθόδου getBytes(String). Η Java εκθέτει τα διαθέσιμα σύνολα χαρακτήρων μέσω της κλάσης Charset. Η τεκμηρίωση του JDK παραθέτει τους υποστηριζόμενους κωδικοποιητές.
Στο 90% των περιπτώσεων, τέτοιες μετατροπές πραγματοποιούνται σε ροές, οπότε θα χρησιμοποιούσατε τις κλάσεις Reader/Writer. Δεν θα αποκωδικοποιούσατε σταδιακά χρησιμοποιώντας τις μεθόδους String σε αυθαίρετες ροές byte - θα αφήνατε τον εαυτό σας ανοιχτό σε σφάλματα που αφορούν χαρακτήρες πολλαπλών byte.