私はこの問題に悩まされています。私はJavaやOracleの教祖ではないので、詳細な答えを教えてください:)oracle + javaのエンコード中に問題があります
私はDBに何かを挿入するWebサービスがあります。 Webサービスは軸でホストされます。デシベルは、次のプロパティを持つoracleです:
NLS_LANGUAGE AMERICAN
NLS_TERRITORY AMERICA
NLS_CHARACTERSET ZHS16GBK
ウェブ・サービスは、Windows Server 2008でホストされている英語版が、私は今、挿入後のデータをエンコードしている中国の
にシステムのロケールを変更していています????、exxkのような奇妙な文字を表示しますか?
jwsファイルにはGBKエンコーディングがあります。 DBに挿入されたデータはファイルにハードコードされています[私たちはREQUESTからそれを読んでいません]
[編集] ただ1つのことですが、DB全体をutf-8に変更することはできませんそれは
マシン物事をより明確にする二つのソースからデータを受け入れるための
[さらに編集]テーブルの多くのデータを持っています。基本的には、購読しているユーザーにsms/mmsを送受信するために使用されています。主に、すべてのエンコーディングがGBKで処理されるGSMオペレータコントロールセンターで動作します。一方、マシンは、ユーザにSMS/MMを送信するためのウェブサイトからの要求も受け入れる。ここで、エンコーディングはUTF-8で処理されます。ウェブサイトがユーザーにSMSを送信したい場合、このマシン上でWebサービスを呼び出し、dbにデータを挿入します[ここに問題があります]。 Windowsサービスは継続的にDBをチェックし、sms/mmsを送信するための新しい要求があれば、sms/mmsを送信してレコードを削除します。
中国語版のWindows 2003を使用していたため、古いマシンではすべて正常に動作していました。新しいサーバーにアップグレードし、Windows 2008 server english versionをインストールしました。 WebサービスがDBに挿入された後にデータが歪められます。
あなたはより良いデータは、それが処理されていますどこに、それが保存されている場所に、最終的には、それを調べていますどのように、来ているところから、全体の処理パイプラインを表示することができます。私は、Webサービスの役割が何であるかはよく分かりません。パイプラインのどの時点でデータがまだ問題ないか教えていただけますか? JavaとOracleの両方がエンコーディングと文字セットを認識しており、変換できないと文句を言うので、挿入自体が問題であるとは思わない。 – Codo