Edycja: Należy zauważyć, że najlepszym sposobem obsługi UTF na Oracle jest utworzenie bazy danych za pomocą zestawu znaków bazy danych AL32UTF8 i użycie zwykłych kolumn varchar2. Jednym z problemów z używaniem kolumn nchar jest to, że oracle nie może używać indeksów dla zwykłych kolumn char/varchar2, gdy argumenty są domyślnie wysyłane jako nchar.
Zresztą: Jeśli nie można przekonwertować bazę danych:
Najpierw literałów Unicode musi być poprzedzone z 'n', jak to:
select n'Language - Språk - Język' from dual;
*) 8-bitowe kodowania nie mogą obsłużyć tego tekstu.
Niestety, to za mało.
Z jakiegoś powodu domyślnym zachowaniem dla klientów baz danych jest przetłumaczenie wszystkich literałów łańcuchowych na zestaw znaków bazy danych, , co oznacza, że wartości zostaną zmienione, nawet zanim baza danych zobaczy łańcuch.
Klienci potrzebują konfigurację, aby móc wstawić znak unicode w kolumnę nchar lub nvarchar:
SQL * Plus na Unix
Te zmienne environemnet konfiguruje środowisko UNIX i sqlplus używać plików UTF-8, , a także skonfigurować sqlplus, aby wysyłać literały łańcuchowe w kodzie Unicode.
NLS_LANG=AMERICAN_AMERICA.AL32UTF8
LC_CTYPE="en_US.UTF-8"
ORA_NCHAR_LITERAL_REPLACE=true
(en_US.UTF-8 dla systemu Solaris. - Linux lub inne systemy mogą wymagać różnych ciągów użyj locale -a
do listy obsługiwanych lokalizacji)
JDBC kierowcy
Aplikacje wykorzystujące wyrocznie JDBC sterownik musi mieć następującą właściwość systemową, aby wysyłać ciągi literałów w kodzie Unicode.
-Doracle.jdbc.defaultNChar=true
-Doracle.jdbc.convertNcharLiterals=true
SQL Developer
Zlokalizuj sqldeveloper.conf, a następnie dodaj następujące linie:
AddVMOption -Doracle.jdbc.defaultNChar=true
AddVMOption -Doracle.jdbc.convertNcharLiterals=true
SQL Plus Microsoft Windows
nie próbowałem jeśli SQLPLUS w systemie Microsoft Windows lub ropuchy obsługuje UTF-8 w ogóle. Sqlplusw.exe może to zrobić, a następujące ustawienia rejestru mogą załatwić sprawę.
NLS_LANG=AMERICAN_AMERICA.AL32UTF8
ORA_NCHAR_LITERAL_REPLACE=true
mam odpowiedzi na to samo, ponieważ spędziłem tydzień na zastanawianie się, to ... Mam nadzieję, że google znajdzie ... – KarlP
pamiętać, że dobrym sposobem aby obsługiwać UTF8 na Oracle, należy utworzyć bazę danych za pomocą zestawu znaków bazy danych AL32UTF8 i użyć zwykłych kolumn varchar2. – KarlP