入出力パラメータSTRUCTを持つJDBCTemplateを使用してOracleストアドプロシージャを呼び出します。この構造体のフィールドの1つは、ストアド・プロシージャ・ロジックに応じて更新されるVARCHARです。しかし、これが呼び出しから返されるときには、3つの疑問符( '???')だけが含まれます。これは恐らくRiddlerの仕事ですが、文字エンコーディングの問題のように聞こえます。私たちは、これが行うことによって取得されたWE8ISO8859P15(ISO8859)の文字エンコーディングを持っていたデータベースにデータベースを切り替えるまで JDBCコールでOracleに3つの疑問符が返される
は、これがうまく働いた:SELECT NLS_CHARACTERSET FROM NLS_DATABASE_PARAMETERS
以前働い文字セットだったWE8MSWIN1252(MSWIN-1252)を正常に動作します。だから私はそれが文字セットの問題になっていると推測していますが、返されるテキストの量にかかわらず、常に3つの疑問符を返すので、私は少し慎重です。
基本的なJDBCドライバ(jdbc:oracle:thin)はすべての文字エンコーディングを自動的に行い、データベースのcharsetをUTF-16(Java charエンコーディング)に変換しますが、これは起こっていないようです。私はStoredProcedureを呼び出すためにStoredProcedureクラス(Springの一部)を使用しています。
また、orai18n.jarをクラスパスに追加しようとしましたが、成功しませんでした。しかし、ISO-8859がかなり標準的な文字セットであることを考えると、これは本当に珍しいようです。
ご協力いただければ幸いです。
検索されるデータは、ISO-8859-15文字セットの一部である文字で構成されていますか?データにISO-8859-15に存在しないWindows-1252文字(Microsoftのスマート引用符など)が含まれている可能性はありますか? –
助けてくれてありがとう、文字列の唯一の珍しい文字はティルダ(〜)ですが、これはWindows-1252とISO-8859の両方の文字セットにあります。 MSのスマートな見積もりをまったく使用しないと思うので、それを排除することができます。 –
orai18n.jarをCPに追加すると、 "???" – JIV