Io suggerirei di usare i membri della stringa, ma con una codifica esplicita:
byte[] bytes = text.getBytes("UTF-8");
String text = new String(bytes, "UTF-8");
Utilizzando una codifica esplicita (e uno che supporta tutti Unicode) si evitano i problemi di limitarsi a chiamare text.getBytes()
ecc:
- Si sta utilizzando in modo esplicito una codifica specifica, in modo da sapere quale codifica utilizzare in seguito, anziché fare affidamento sull'impostazione predefinita della piattaforma.
- Sapete che supporterà tutto Unicode (al contrario, per esempio, ISO-Latin-1).
MODIFICA: Anche se UTF-8 è la codifica predefinita su Android, sarei sicuramente esplicito a riguardo. Ad esempio, questa domanda dice solo "in Java o Android" - quindi è del tutto possibile che il codice finirà per essere utilizzato su altre piattaforme.
Sostanzialmente visto che la normale piattaforma Java può avere diverse codifiche predefinite, penso che sia meglio essere assolutamente espliciti. Ho visto troppe persone usare la codifica predefinita e perdere dati per correre questo rischio.
EDIT: Nella fretta ho dimenticato di dire che non c'è bisogno di usare il nome del codifica - è possibile utilizzare un Charset
invece. Utilizzando Guava avevo davvero uso:
byte[] bytes = text.getBytes(Charsets.UTF_8);
String text = new String(bytes, Charsets.UTF_8);
fonte
2011-10-30 21:22:17
Prova utilizzando SHA128 se' inviando la stringa ad un adruino. È reversibile; ma non so se avresti bisogno di quel codice sull'arduino. –