Oracle
 sql >> Cơ Sở Dữ Liệu >  >> RDS >> Oracle

khi chèn ký tự Persian trong oracle db, tôi thấy dấu chấm hỏi

Khi bạn nói rằng bạn chạy trên máy chủ, ý bạn là thông qua SQL * Plus?

Điều đầu tiên cần kiểm tra là ký tự thực nào đang được lưu trữ - sử dụng hàm DUMP để kiểm tra điều này:

Hàm Dump của Oracle

Điều này sẽ cho bạn biết những gì thực sự được lưu trữ. Nếu chuỗi giữa ứng dụng khách của bạn và máy chủ Oracle không phù hợp, bạn có thể nhận được chuyển đổi bộ ký tự xảy ra.

Giả sử ký tự chính xác đang được lưu, những gì bạn thấy sau đó trên máy chủ / sqlplus là chuyển đổi ký tự trên màn hình. I E. Oracle đang "phục vụ" ký tự một cách chính xác, nhưng màn hình không xử lý nó như bạn mong đợi. Để khắc phục điều này, bạn cần đặt biến môi trường NLS_LANG thành bộ ký tự chính xác.

ví dụ:trong một dự án gần đây, mặc định:

set NLS_LANG=AMERICAN_AMERICA.US7ASCII

sau đó truy vấn một số dữ liệu đã cho:

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

Nhưng:

set NLS_LANG=AMERICAN_AMERICA.US8PC437

Sau đó, chạy truy vấn đưa ra:

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

Và cả:

set NLS_LANG=AMERICAN_AMERICA.WE8ISO8859P15

đã cho:

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

Điều quan trọng ở đây là dữ liệu thực tế giống nhau, cách dữ liệu được hiển thị trên màn hình của bạn là khác nhau và hành vi đó có thể được kiểm soát bởi NLS_LANG.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Chuyển VARCHAR2 thành Số

  2. Nhà cung cấp OraOLEDB.Oracle chưa được đăng ký trên máy cục bộ

  3. Cơ chế theo sau của Oracle khi chúng tôi sao lưu nóng

  4. không thể tải oci8 -> Lỗi nghiêm trọng:Gọi đến hàm không xác định oci_connect ()

  5. Cập nhật câu lệnh với tham gia bên trong trên Oracle