|
|||||||
|
|
|
![]() |
|
|
Strumenti |
|
|
#1 |
|
Senior Member
Iscritto dal: Oct 2003
Messaggi: 1288
|
[Java e Mysql] Perdita di dati
Ho un'applicazione java che utilizza un db MySql. Quando però memorizzo nel db delle stringhe particolari (ottenute come hash di certi file.. quindi sono complesse, piene di caratteri particolari) poi se le ricarico dal db non ottengo più gli stessi valori identici. Dovrei usare un tipo di dato diverso da varchar?
|
|
|
|
|
|
#2 |
|
Senior Member
Iscritto dal: Jan 2001
Città: Milano
Messaggi: 5707
|
il character set di default per mysql è latin1, da quello che dici probabilmente ci stai scrivendo sopra con un cs unicode.
pero' è strano, un hash md5 ad esempio è espresso in esadecimale (quindi solo con i caratteri 0-9a-f , che algoritmo stai usando? |
|
|
|
|
|
#3 | |
|
Senior Member
Iscritto dal: Oct 2003
Messaggi: 1288
|
Quote:
Codice:
public String calcolcaHashStringa(String stringa) throws Exception{
MessageDigest md = MessageDigest.getInstance("MD5");
byte[] b=stringa.getBytes();
byte[] hashArray =md.digest(b);
String hash=new String(hashArray);
return hash;
}
|
|
|
|
|
|
|
#4 |
|
Member
Iscritto dal: Aug 2006
Messaggi: 39
|
Non conviene convertire il risultato in Base64 prima di metterlo sul db?
In questo modo non ci sono caratteri strani... EDIT: Sembra che java non abbia ufficialmente una classe per fare l'encoding in Base64...quindi eccoti il link per scaricare un'implementazione libera http://iharder.sourceforge.net/base64/ Poi ci sono le istruzioni sul sito... Buona fortuna Ultima modifica di aldonation : 25-08-2006 alle 10:25. |
|
|
|
|
|
#5 |
|
Senior Member
Iscritto dal: Oct 2003
Messaggi: 1288
|
Ok ora dovrebbe funzionare. Prima che editassi avevo guardato un po' su google trovando del codice. Cmq grazie del Link. Ora almeno ottengo stringhe in esadecimale e sono sicuro che dopo quando riprobverò l'applicazione funzionerà tutto.
Grazie ancora EDIT: Confermo, ora funziona! Ultima modifica di Night82 : 25-08-2006 alle 11:06. |
|
|
|
|
| Strumenti | |
|
|
Tutti gli orari sono GMT +1. Ora sono le: 14:35.



















