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

Sự cố khi sử dụng / hiển thị các ký tự đặc biệt từ Oracle db trong ứng dụng .Net

Các ký tự nhất định trong bộ ký tự WE8ISO8859P1 có biểu diễn nhị phân khác với ký tự tương tự trong UTF8.

Những gì tôi đề xuất là 2 cách khả thi

1) Thử sử dụng các nhà cung cấp dữ liệu gốc Oracle cho .NET (ODP.NET). Có thể có một lỗi / tính năng trong thư viện System.Data.OracleClient của Microsoft khiến bộ điều hợp này không tự động hỗ trợ chuyển đổi WE8ISO8859P1 sang unicode. Đây là liên kết đến ODP.NET

Tôi hy vọng rằng sẽ có sự hỗ trợ cho mã hóa này trong ODP (nhưng nói thật là tôi chưa bao giờ kiểm tra điều này, đó chỉ là một gợi ý)

2) Cách giải quyết:trong Dataset, bạn nên tạo trường nhị phân (được ánh xạ tới trường bảng gốc) và trường Chuỗi (không được ánh xạ tới cơ sở dữ liệu). Khi bạn tải dữ liệu vào tập dữ liệu, hãy lặp lại cho từng hàng và chuyển đổi perfrom từ mảng nhị phân sang chuỗi.

Mã phải giống như thế này

Encoding e = Encoding.GetEncoding("iso-8859-1");
foreach(DataRow row in dataset.Tables["MyTable"])
{
    if (!row.IsNull("MyByteArrayField"))
        row["MyStringField"] = e.GetString((row["MyByteArrayField"] as byte[]));
}


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Làm thế nào để thoát khỏi cột LOB trống nhưng rất lớn?

  2. Làm thế nào để chuyển đổi XML sang Đối tượng OCI-Lob?

  3. 50 Sắc thái của Kỳ thi Chứng chỉ Cơ sở dữ liệu Oracle

  4. OdbcConnection trả về các ký tự Trung Quốc là?

  5. Có sự khác biệt về hiệu suất giữa concat vs || trong tiên tri