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

UnicodeデータをOracleに保存する方法は?

    問題が発生する可能性のある5つの領域を確認できます。

    1. 実際にどのようにしてテキストを.NETアプリケーションに取り込みますか?文字列リテラルにハードコーディングされている場合、コンパイラがソースファイルに適切なエンコーディングを想定していることを確認しますか?

    2. データベースへの送信方法に問題がある可能性があります。

    3. データベースへの保存方法に問題がある可能性があります。

    4. データベースでの取得方法に問題がある可能性があります。

    5. 後でもう一度表示する方法に問題がある可能性があります。

    現在、エリア2〜4は、1および5よりも問題になる可能性が低いように聞こえます。その後、テキストをどのように表示しますか?実際に.NETのデータベースから取得していますか、それともToadなどを使用して表示しようとしていますか?

    .NETから再度書き出す場合は、データベースを完全にスキップすることをお勧めします。文字列自体を表示するだけの場合、何が表示されますか?

    Unicodeの問題のデバッグに役立つと思われる記事があります。特に、エンコーディングができるすべての場所に集中してください。 間違っているので、文字列を「表示」するときは常に、正確なUnicode文字を(整数として)ダンプして、現在のフォントで表示したいものだけでなく、それらをチェックできるようにしてください。

    編集:わかりました。データベースは 問題のどこかに関与しました。

    私は強く 方程式からASPやHTMLなどを削除することをお勧めします。 何もしないシンプルなコンソールアプリを作成する ただし、文字列を挿入して再度フェッチします。前後の個々のUnicode文字を(整数として)ダンプするようにします。次に、データベースの内容を確認してみてください(Toadを使用するなど)。文字列を個々のUnicode文字のシーケンスに変換してから、それらの文字を整数に変換するOracle関数はわかりませんが、それが次に試すことになる可能性があります。

    編集:さらに2つの提案(コンソールアプリを見るのは良いことですが)

    1. パラメータにオブジェクトを与えるだけでなく、パラメータのデータ型を指定します。例:

      command.Parameters.Add (":UnicodeString",
                              OracleType.NVarChar).Value = stringToSave;
      
    2. .NETに組み込まれているドライバーではなく、Oracle独自のドライバーを使用することを検討してください。とにかくこれを実行することをお勧めします。これは、一般的に、より高速で信頼性が高いと考えられているためです。



    1. Oracle SQL構文:引用符で囲まれた識別子

    2. SQLiteは14のエラーコードを返しました

    3. MySQLの新しいHeatwaveを理解する

    4. ReadyCloud ReadyShipper X