View Full Version : [java/generale] pulire stringa esadecimale(sembra)
Ciao ragazzi, ho un problema. Mi invio da solo una mail tramite outlook e la ricevo programmaticamente da socket tramite java. Ora, vi faccio qualche esempio di quello che mando e quello che ricevo:
"prova" --> "prova" //BENE!
"è é ì à ò ù" --> "6CDpIOwg4CDyIPkNCg=="
"è é ì à ò ù èèè" --> "6CDpIOwg4CDyIPkg6OjoDQo="
:cry: :cry:
Ho notato che outlook se metto solo caratteri a 128 bit usa il charset "us-ascii", altrimenti "iso-8859-1". Ma questo in ogni caso non cambia le cose. Ricevo sempre quella codifica esadecimale(sembra). Ho guardato non so quante tabelle dell'iso-8859 ma non mi ci ritrovo. Qualcuno riesce ad aiutarmi?
Più che esadecimale direi base64...
Base64? Non mi pare di averlo mai visto nelle tabelle che ho trovato finora. Ne conosci qualcuna?
Stai facendo confusione.
L'encoding base64 lavora su una sequenza di byte. Le meccaniche di outlook e del tuo programma che legge dal socket mi sono oscure, ma quello che avviene nei tuoi esempi sembra sia qualcosa di simile:
- se la stringa contiene solo caratteri rappresentabili dal charset us-ascii -> nessuna conversione.
- altrimenti converti in binario (secondo l'encoding di default del sistema mi vien da dire, ma chi lo sa...) e poi in base64.
http://en.wikipedia.org/wiki/Base64
Guarda quest'altra:
"Prova è solo per noi di lunedì" --> "Prova =E8 solo per noi di luned=EC"
La cosa che mi perplime è che la e accentata qua sembra rappresentata diversamente che non negli esempi di prima :cry:
Guarda quest'altra:
"Prova è solo per noi di lunedì" --> "Prova =E8 solo per noi di luned=EC"
La cosa che mi perplime è che la e accentata qua sembra rappresentata diversamente che non negli esempi di prima :cry:
Boh... a me sembra che tu ed outlook usiate due encoding diversi. Puoi postare un pò di codice?
Penso non ce ne sia più bisogno. Non mi ero accorto che tra gli attributi,che mi sparava fuori della mail, c'è anche un content-transfer-encoding che ha come valore nei tre casi qualcosa del tipo:
- 7bit
- Base64
- quoted-printable
Quindi adesso posso distinguere i casi: nel primo non faccio nulla, nel secondo dovrò trovare un modo di passare da base64 a stringa normale e nel terzo(è l'ultimo esempio che ho postato), su cui mi sto concentrando ora, non faccio altro che cambiare gli esadecimali nei caratteri accentati corrispondenti.
Ti ringrazio :)
vBulletin® v3.6.4, Copyright ©2000-2025, Jelsoft Enterprises Ltd.