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.