問題が発生する可能性のある5つの領域を確認できます。
-
実際にどのようにしてテキストを.NETアプリケーションに取り込みますか?文字列リテラルにハードコーディングされている場合、コンパイラがソースファイルに適切なエンコーディングを想定していることを確認しますか?
-
データベースへの送信方法に問題がある可能性があります。
-
データベースへの保存方法に問題がある可能性があります。
-
データベースでの取得方法に問題がある可能性があります。
-
後でもう一度表示する方法に問題がある可能性があります。
現在、エリア2〜4は、1および5よりも問題になる可能性が低いように聞こえます。その後、テキストをどのように表示しますか?実際に.NETのデータベースから取得していますか、それともToadなどを使用して表示しようとしていますか?
.NETから再度書き出す場合は、データベースを完全にスキップすることをお勧めします。文字列自体を表示するだけの場合、何が表示されますか?
Unicodeの問題のデバッグに役立つと思われる記事があります。特に、エンコーディングができるすべての場所に集中してください。 間違っているので、文字列を「表示」するときは常に、正確なUnicode文字を(整数として)ダンプして、現在のフォントで表示したいものだけでなく、それらをチェックできるようにしてください。
編集:わかりました。データベースは 問題のどこかに関与しました。
私は強く 方程式からASPやHTMLなどを削除することをお勧めします。 何もしないシンプルなコンソールアプリを作成する ただし、文字列を挿入して再度フェッチします。前後の個々のUnicode文字を(整数として)ダンプするようにします。次に、データベースの内容を確認してみてください(Toadを使用するなど)。文字列を個々のUnicode文字のシーケンスに変換してから、それらの文字を整数に変換するOracle関数はわかりませんが、それが次に試すことになる可能性があります。
編集:さらに2つの提案(コンソールアプリを見るのは良いことですが)
-
パラメータにオブジェクトを与えるだけでなく、パラメータのデータ型を指定します。例:
command.Parameters.Add (":UnicodeString", OracleType.NVarChar).Value = stringToSave;
-
.NETに組み込まれているドライバーではなく、Oracle独自のドライバーを使用することを検討してください。とにかくこれを実行することをお勧めします。これは、一般的に、より高速で信頼性が高いと考えられているためです。