WE8MSWIN1252 è Latin-1 che vuol dire i nostri caratteri (ASCII più lettere accentate e poco altro (
qui le info)).
Per far sì che Oracle possa memorizzare caratteri al di fuori di quel charset occorre impostarlo a AL32UTF8 (
qui ne parlano).
Dopo aver cambiato il tipo di database (operazione che non può essere fatta dentro In.de ma occorre effettuarla su database), devi attivare il flag "Campi carattere unicode" che trovi nella videata delle proprietà del database e ricreare la struttura. Infatti non basta che il database cambi tipo occorre anche che il tipo di dato delle colonne di tipo STRING passi da "varchar2" a "nvarchar2".
A questo punto puoi memorizzare anche caratteri in qualunque lingua, russo e cinese compreso.
Se non puoi farlo (come mi hai detto) ti posso suggerire un'altra soluzione. Potresti memorizzare le password sul database in BASE64. La codifica BASE64 allunga un po' il testo digitato ma la stringa che ottieni è sempre e solo costituita di caratteri ASCII e quindi memorizzabile su qualunque DB.
Ci sono funzioni in C# e Java per convertire da stringa a BASE64 e viceversa. Abbiamo anche una funzione interna (non pubblica) che potrebbe fare al caso tuo. La puoi mappare tu in libreria scrivendo nell'espressione
- Code: Select all
new IDVariant(IDL.Base64Encode($1.stringValue()))
per la funzione che encoda e
- Code: Select all
new IDVariant(IDL.Base64Decode($1.stringValue()))
per la funzione che effettua al decode.
Spero di aver risposto alla tua domanda.