Oracle
 sql >> Baza danych >  >> RDS >> Oracle

po wstawieniu znaku perskiego w Oracle db widzę znak zapytania

Kiedy mówisz, że działasz na serwerze, masz na myśli SQL*Plus?

Pierwszą rzeczą do sprawdzenia jest to, jaki aktualnie znak jest przechowywany - użyj funkcji DUMP, aby to sprawdzić:

Funkcja zrzutu Oracle

Dzięki temu dowiesz się, co jest faktycznie przechowywane. Jeśli łańcuch między aplikacją kliencką a serwerem Oracle nie jest odpowiedni, może wystąpić konwersja zestawu znaków.

Zakładając, że zapisywany jest poprawny znak, to co widzisz na serwerze / sqlplus to konwersja znaków na wyświetlaczu. Tj. Oracle poprawnie "serwuje" znak, ale wyświetlacz nie obsługuje go tak, jak oczekiwałeś. Aby to naprawić, musisz ustawić zmienną środowiskową NLS_LANG na poprawny zestaw znaków.

np. w ostatnim projekcie domyślnie:

set NLS_LANG=AMERICAN_AMERICA.US7ASCII

następnie zapytanie dało jakieś dane:

NAME
-----------------------------------
MS ELLIE MARTALL

Ale:

set NLS_LANG=AMERICAN_AMERICA.US8PC437

Następnie uruchomienie zapytania dało:

NAME
-----------------------------------
MS ÉLLIE MARTALL

A także:

set NLS_LANG=AMERICAN_AMERICA.WE8ISO8859P15

dał:

NAME
-----------------------------------
MS ╔LLIE MARTALL

Kluczową rzeczą tutaj jest to, że rzeczywiste dane są takie same, różni się sposób, w jaki dane są prezentowane na ekranie, a zachowaniem można sterować za pomocą NLS_LANG.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Oracle Search wszystkie tabele wszystkie kolumny dla ciągu znaków

  2. Dlaczego klauzula Oracle IN ma limit 1000 tylko dla danych statycznych?

  3. Limit czasu połączenia dla DriverManager getConnection

  4. Połącz ponownie infrastrukturę sieciową

  5. Stronicowanie za pomocą serwera Oracle i sql oraz ogólna metoda stronicowania