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

Làm thế nào để lưu dữ liệu unicode vào oracle?

Tôi có thể thấy năm lĩnh vực tiềm ẩn các vấn đề:

  1. Làm thế nào bạn thực sự nhận được văn bản vào ứng dụng .NET của bạn? Nếu nó được mã hóa cứng trong một chuỗi ký tự, bạn có chắc chắn rằng trình biên dịch đang giả định mã hóa phù hợp cho tệp nguồn của bạn không?

  2. Có thể có sự cố trong cách bạn gửi nó đến cơ sở dữ liệu.

  3. Có thể có vấn đề với cách nó được lưu trữ trong cơ sở dữ liệu.

  4. Có thể có vấn đề với cách bạn tìm nạp nó trong cơ sở dữ liệu.

  5. Có thể có vấn đề với cách bạn hiển thị lại sau đó.

Bây giờ các khu vực 2-4 có vẻ như chúng ít có khả năng là vấn đề hơn 1 và 5. Sau đó, bạn hiển thị văn bản như thế nào? Bạn đang thực sự tìm nạp nó từ cơ sở dữ liệu trong .NET hay bạn đang sử dụng Toad hoặc thứ gì đó tương tự để thử xem nó?

Nếu bạn đang viết lại từ .NET, tôi khuyên bạn nên bỏ qua hoàn toàn cơ sở dữ liệu - nếu bạn chỉ hiển thị chính chuỗi, bạn thấy gì?

Tôi có một bài viết mà bạn có thể thấy hữu ích về gỡ lỗi các sự cố Unicode. Đặc biệt, tập trung vào mọi nơi mã hóa có thể đang xảy ra sai sót và hãy đảm bảo rằng bất cứ khi nào bạn "hiển thị" một chuỗi, bạn sẽ loại bỏ các ký tự Unicode chính xác (dưới dạng số nguyên) để bạn có thể kiểm tra những ký tự đó thay vì chỉ bất kỳ phông chữ hiện tại của bạn muốn hiển thị.

CHỈNH SỬA:Được rồi, vậy cơ sở dữ liệu liên quan đến một nơi nào đó trong vấn đề.

Tôi mạnh mẽ đề nghị bạn loại bỏ bất kỳ thứ gì như ASP và HTML ra khỏi phương trình. Viết một ứng dụng bảng điều khiển đơn giản mà không có gì nhưng hãy chèn chuỗi và tìm nạp lại. Làm cho nó kết xuất các ký tự Unicode riêng lẻ (dưới dạng số nguyên) trước và sau đó. Sau đó, hãy thử xem có gì trong cơ sở dữ liệu (ví dụ:sử dụng Toad). Tôi không biết các chức năng của Oracle để chuyển đổi chuỗi thành chuỗi các ký tự Unicode riêng lẻ và sau đó chuyển đổi các ký tự đó thành số nguyên, nhưng đó rất có thể là điều tiếp theo tôi muốn thử.

CHỈNH SỬA:Thêm hai đề xuất (tốt để xem ứng dụng bảng điều khiển, btw).

  1. Chỉ định kiểu dữ liệu cho tham số, thay vì chỉ cho nó một đối tượng. Ví dụ:

    command.Parameters.Add (":UnicodeString",
                            OracleType.NVarChar).Value = stringToSave;
    
  2. Cân nhắc sử dụng trình điều khiển riêng của Oracle thay vì trình điều khiển được tích hợp trong .NET. Bạn có thể muốn làm điều này bằng mọi cách, vì nó thường được coi là nhanh hơn và đáng tin cậy hơn, tôi tin rằng.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Nhập tệp .csv vào ứng dụng Oracle Forms

  2. Gọi một thủ tục được lưu trữ với một thủ tục khác trong Oracle

  3. Làm cách nào để xuất kết quả truy vấn sang Excel trong Oracle SQL Developer?

  4. Tên Ràng buộc Mặc định trong Oracle là gì?

  5. Tôi không hiểu đối chiếu? (Mysql, RDBMS, Bộ ký tự)