Det virker, fordi følgende betingelser begge er sande:
- Klienttegnsæt er lig med dit databasetegnsæt.
- Tegnsættet tillader enhver byteværdi
Dit databasetegnsæt og dit klienttegnsæt er indstillet til US7ASCII
. I så fald skrives/læses hver data én efter én uden nogen konvertering, dvs. de bytes, du sender, skrives nøjagtigt til databasen. Du har sandsynligvis ikke indstillet NLS_LANG
overhovedet på din klientside, men Oracle indstiller det som standard til AMERICAN_AMERICA.US7ASCII
.
US7ASCII
er en 7-bit-kodning. Jeg antager, at en ren ASCII-applikation (som kunne være ret svær at finde) bare vil ignorere den 8. bit, som er gemt i en 8-bit arkitektur. Andre tegnsæt, f.eks. AL32UTF8
tillad ikke hver byteværdi. I dette tilfælde vil sådanne tegn blive erstattet af en pladsholder, f.eks. ¿
eller ?
.
Bemærk, du indstiller dit klienttegnsæt til US7ASCII
hvilket højst sandsynligt ikke er korrekt. Indstil det korrekt til det tegnsæt, der bruges af din applikation, og derefter °
vil blive erstattet.
Hvis du bruger SQL*Plus, skal du kontrollere konsollens tegntabel med kommandoen chcp
, hhv. locale charmap
. Indstil din NLS_LANG
miljøvariabel i overensstemmelse hermed, før du starter sqlplus.