Oracle
 sql >> Teknologi Basis Data >  >> RDS >> Oracle

Jika kita memiliki set karakter US7ASCII mengapa membiarkan kita menyimpan karakter non-ascii?

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.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Peningkatan otomatis di Oracle tanpa menggunakan pemicu

  2. Jumlah baris yang terpengaruh oleh UPDATE di PL/SQL

  3. Bagaimana cara memasukkan karakter khusus seperti &di database Oracle?

  4. Fungsi NLS_COLLATION_ID() di Oracle

  5. cara menulis kueri sql