sql >> Databáze >  >> RDS >> Oracle

při vložení perského znaku do Oracle db vidím otazník

Když říkáte, že běžíte na serveru, máte na mysli SQL*Plus?

První věc, kterou je třeba zkontrolovat, je, jaký skutečný znak se ukládá – pomocí funkce DUMP zkontrolujte toto:

Funkce Oracle Dump

To vám řekne, co je skutečně uloženo. Pokud řetězec mezi vaší klientskou aplikací a serverem Oracle není vhodný, může dojít ke konverzi znakové sady.

Za předpokladu, že se ukládá správný znak, pak na serveru / sqlplus uvidíte konverzi znaků na displeji. Tj. Oracle „servíruje“ znak správně, ale displej s ním nepracuje tak, jak očekáváte. Chcete-li to vyřešit, musíte nastavit proměnnou prostředí NLS_LANG na správnou znakovou sadu.

např. v nedávném projektu výchozí:

set NLS_LANG=AMERICAN_AMERICA.US7ASCII

pak dotaz na některá data poskytl:

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

Ale:

set NLS_LANG=AMERICAN_AMERICA.US8PC437

Potom spuštění dotazu poskytlo:

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

A také:

set NLS_LANG=AMERICAN_AMERICA.WE8ISO8859P15

dal:

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

Klíčová věc je, že skutečná data jsou stejná, liší se způsob, jakým jsou data prezentována na vašem displeji, a toto chování lze ovládat pomocí NLS_LANG.



  1. SQL klíče, MUL vs PRI vs UNI

  2. Získejte záznamy za minulý měsíc na SQL serveru

  3. MySQL:Seřaďte hodnoty GROUP_CONCAT

  4. Datum/Časové razítko pro záznam, kdy byl záznam přidán do tabulky?