Ini berfungsi karena kondisi berikut keduanya benar:
- Set karakter klien sama dengan set karakter database Anda.
- Set karakter mengizinkan nilai byte apa pun
Set karakter database Anda dan set karakter klien Anda disetel ke US7ASCII
. Dalam kasus seperti itu setiap data ditulis/dibaca satu per satu tanpa konversi apa pun, yaitu byte yang Anda kirim persis ditulis ke database. Mungkin Anda tidak menyetel NLS_LANG
sama sekali di sisi klien Anda tetapi Oracle default ke AMERICAN_AMERICA.US7ASCII
.
US7ASCII
adalah pengkodean 7-bit. Saya berasumsi aplikasi ASCII murni (yang mungkin cukup sulit ditemukan) hanya akan mengabaikan bit ke-8 yang disimpan dalam arsitektur 8-Bit. Set karakter lain, mis. AL32UTF8
tidak mengizinkan setiap nilai byte. Dalam hal ini karakter tersebut akan digantikan oleh placeholder, mis. ¿
atau ?
.
Catatan, Anda mengatur set karakter klien Anda ke US7ASCII
yang kemungkinan besar tidak benar. Atur dengan benar ke set karakter yang digunakan oleh aplikasi Anda, lalu °
akan diganti.
Jika Anda menggunakan SQL*Plus, periksa halaman kode konsol dengan perintah chcp
, hal. locale charmap
. Setel NLS_LANG
Anda variabel lingkungan yang sesuai sebelum Anda memulai sqlplus.