sql >> データベース >  >> RDS >> Oracle

.NetアプリでOracledbの特殊文字を使用/表示する際の問題

    WE8ISO8859P1文字セットの特定の文字は、UTF8の同じ文字とは異なるバイナリ表現を持っています。

    私が提案するのは2つの可能な方法です

    1).NET用のOracleネイティブデータプロバイダー(ODP.NET)を使用してみてください。 MicrosoftのライブラリSystem.Data.OracleClientに、このアダプタがWE8ISO8859P1からUnicodeへの変換を自動的にサポートしないというバグ/機能がある可能性があります。 ここに、ODP.NETへのリンクがあります

    ODPでこのエンコーディングがサポートされることを願っています(ただし、これを確認したことはありません。これは単なる提案です)

    2)回避策:データセットで、バイナリフィールド(元のテーブルフィールドにマップされている)と文字列フィールド(データベースにマップされていない)を作成する必要があります。データセットにデータをロードするときは、行ごとに繰り返し、バイナリ配列から文字列への変換を実行します。

    コードは次のようになります

    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. Javaで同等のencode(<columnName>、'escape')PostgreSQLとは何ですか?

    2. PythonからのSQLServerストアドプロシージャの使用(pyodbc)

    3. Pythonカーソルを使用してストアドプロシージャから結果を返すことはできません

    4. Laravelにおける外部キーとEloquentの関係の移行