Oracle Unicode
Jump to navigation
Jump to search
modalità indipendente dal codeset di sessione
Per funzionare il terminale deve avere lo stesso codeset della connessione oracle (variabile NLS_LANG). i terminali linux nativi normalmente hanno codeset UTF8. verifica se il terminale è impostato bene:
select 'a minuscola accentata e simbolo euro',unistr('\00E0\20AC') from dual;
SQL> select unistr('Modalit\00E0 Euro(\20AC)') from dual;
UNISTR('MODALIT\00E0EURO(\20AC)') ---------------------------------------------------------------- Modalità Euro(€)
SQL>
caratteri estesi
SQL> select UNISTR('\20AC') from dual;
UNISTR('\20AC') -------------------------------------------------------------------------------- €
SQL> select asciistr('€') from dual;
ASCIISTR('€') -------------------------------------------------------------------------------- \20AC
Questi i principali caratteri accentati:
SQL> select asciistr('èÈéÉàÀìÌòÒùÙ') as caratteri_accentati from dual;
CARATTERI_ACCENTATI -------------------------------------------------------------------------------- \00E8\00C8\00E9\00C9\00E0\00C0\00EC\00CC\00F2\00D2\00F9\00D9
correggere caratteri estesi
Spesso, per non corrispondenza del codeset del file di input con il codeset della sessione oracle, vengono inseriti caratteri estesi non corrispondenti al file di input. Per trovare le righe con caratteri estesi:
select COLONNA1 || ' ###### ' || asciistr(COLONNA1) from TABELLA1 where asciistr(COLONNA1) like '%\%';
Per modificare i caratteri estesi:
update TABELLA1 set COLONNA1=unistr(replace(asciistr(COLONNA1),'\00E0\00A0','\00E0')) where asciistr(COLONNA1) like '%\00E0\00A0%';