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

US7ASCII文字セットがある場合、なぜ非ASCII文字を格納できるのですか?

    次の条件が両方とも当てはまるため、機能します。

    • クライアントの文字セットはデータベースの文字セットと同じです。
    • 文字セットは任意のバイト値を許可します

    データベースの文字セットとクライアントの文字セットはUS7ASCIIに設定されています 。このような場合、各データは変換なしで1つずつ書き込まれます。つまり、送信するバイトはデータベースに正確に書き込まれます。おそらくNLS_LANGを設定していません クライアント側ではまったくありませんが、Oracleのデフォルトは AMERICAN_AMERICA.US7ASCIIです。 。

    US7ASCII 7ビットエンコーディングです。純粋なASCIIアプリケーション(見つけるのはかなり難しいかもしれません)は、8ビットアーキテクチャに格納されている8番目のビットを無視するだけだと思います。他の文字セット、例えば AL32UTF8 各バイト値を許可しないでください。この場合、そのような文字はプレースホルダーに置き換えられます。 ¿ または

    クライアントの文字セットをUS7ASCIIに設定することに注意してください これはおそらく正しくありません。アプリケーションで使用されている文字セットに適切に設定してから、° 交換されます。

    SQL * Plusを使用する場合は、コマンド chcpを使用してコンソールのコードページを確認してください。 、それぞれロケールcharmap NLS_LANGを設定します sqlplusを開始する前に、それに応じて環境変数を設定します。



    1. すべての値が存在するテーブルを結合するSQLの効率的な方法

    2. C#Oracleストアドプロシージャのパラメータの順序

    3. Postgres generate_series

    4. MySQLの用語の制約と外部キーの違いは?