sql >> Databasteknik >  >> RDS >> Oracle

När jag sätter in persiskt tecken i Oracle db ser jag frågetecknet

När du säger att du kör på servern menar du genom SQL*Plus?

Det första du bör kontrollera är vilket faktiska tecken som lagras - använd DUMP-funktionen för att kontrollera detta:

Oracle Dump-funktion

Detta kommer att berätta vad som faktiskt lagras. Om kedjan mellan din klientapp och Oracle-servern inte är lämplig kan du få teckenuppsättningskonvertering.

Förutsatt att rätt tecken sparas, vad du sedan ser på servern / sqlplus är teckenkonvertering som visas. d.v.s. Oracle "servar" karaktären korrekt, men skärmen hanterar den inte som du förväntar dig. För att fixa detta måste du ställa in miljövariabeln NLS_LANG till rätt teckenuppsättning.

t.ex. i ett nyligen projekt är standard:

set NLS_LANG=AMERICAN_AMERICA.US7ASCII

fråga sedan några data gav:

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

Men:

set NLS_LANG=AMERICAN_AMERICA.US8PC437

Att sedan köra frågan gav:

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

Och även:

set NLS_LANG=AMERICAN_AMERICA.WE8ISO8859P15

gav:

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

Det viktigaste här är att den faktiska informationen är densamma, det är sättet som data presenteras på din skärm som skiljer sig, och det beteendet kan kontrolleras av NLS_LANG.



  1. Vad du ska göra om du får ett felaktigt ordningsfel för bokmärket när du använder SQL Server med vår Oracle ODBC-drivrutin

  2. INTE IN vs INTE FINNS

  3. java.sql.SQLException Parameterindex utanför intervallet (1> antal parametrar, vilket är 0)

  4. SQL SELECT-sats