sql >> Database >  >> RDS >> Oracle

bij het invoegen van een Perzisch teken in oracle db zie ik het vraagteken

Als je zegt dat je op de server draait, bedoel je via SQL*Plus?

Het eerste dat u moet controleren, is welk teken daadwerkelijk wordt opgeslagen - gebruik de DUMP-functie om dit te controleren:

Oracle Dump-functie

Dit zal u vertellen wat er daadwerkelijk is opgeslagen. Als de keten tussen uw client-app en Oracle-server niet geschikt is, kan er een tekensetconversie plaatsvinden.

Ervan uitgaande dat het juiste teken wordt opgeslagen, ziet u op de server / sqlplus tekenconversie op het scherm. D.w.z. Oracle "serveert" het karakter correct, maar het scherm behandelt het niet zoals je zou verwachten. Om dit op te lossen, moet u de omgevingsvariabele NLS_LANG instellen op de juiste tekenset.

bijv. in een recent project is de standaardinstelling:

set NLS_LANG=AMERICAN_AMERICA.US7ASCII

bevraag vervolgens enkele gegevens die gaven:

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

Maar:

set NLS_LANG=AMERICAN_AMERICA.US8PC437

Toen het uitvoeren van de query gaf:

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

En ook:

set NLS_LANG=AMERICAN_AMERICA.WE8ISO8859P15

gaf:

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

Het belangrijkste hier is dat de feitelijke gegevens hetzelfde zijn, het is de manier waarop gegevens op uw scherm worden weergegeven wat verschilt, en dat gedrag kan worden gecontroleerd door NLS_LANG.



  1. PostgreSQL-server wil niet afsluiten op Lion (Mac OS 10.7)

  2. Webinar:Bankieren op Postgres - Overwegingen bij financiële toepassingen [follow-up]

  3. Hoe FOUT op te lossen:kolom c.relhasoids bestaat niet in Postgres?

  4. 4 manieren om gevoelige informatie van uw klanten te beschermen