次の条件が両方とも当てはまるため、機能します。
- クライアントの文字セットはデータベースの文字セットと同じです。
- 文字セットは任意のバイト値を許可します
データベースの文字セットとクライアントの文字セットはUS7ASCIIに設定されています 。このような場合、各データは変換なしで1つずつ書き込まれます。つまり、送信するバイトはデータベースに正確に書き込まれます。おそらくNLS_LANGを設定していません クライアント側ではまったくありませんが、Oracleのデフォルトは AMERICAN_AMERICA.US7ASCIIです。 。
US7ASCII 7ビットエンコーディングです。純粋なASCIIアプリケーション(見つけるのはかなり難しいかもしれません)は、8ビットアーキテクチャに格納されている8番目のビットを無視するだけだと思います。他の文字セット、例えば AL32UTF8 各バイト値を許可しないでください。この場合、そのような文字はプレースホルダーに置き換えられます。 ¿コード> または? 。
クライアントの文字セットをUS7ASCIIに設定することに注意してください これはおそらく正しくありません。アプリケーションで使用されている文字セットに適切に設定してから、° 交換されます。
SQL * Plusを使用する場合は、コマンド chcpを使用してコンソールのコードページを確認してください。 、それぞれロケールcharmap 。 NLS_LANGを設定します sqlplusを開始する前に、それに応じて環境変数を設定します。