構成済みのOracleデータベースの注文をインストールしていて、どの文字エンコードが必要かを尋ねられます。アプリケーション(Java)は英語のみですが、ユーザーは世界のさまざまな地域から来ています。
UTF8または他のUnicode文字セットを使用しない動機はありますか?
2つの選択肢があります。
VARCHAR2
、CHAR
、CLOB
データ型で使用)を選択します。NVARCHAR2
、NCHAR
、NCLOB
データ型で使用)を選択します。として ここに見られる :
すべての新しいシステム展開にはUnicodeを使用することをお勧めします。
国別文字セットはUnicodeのみです:UTF-8またはUTF-16。したがって、両方に同じ文字セットを選択するのは冗長です...
私のアドバイス(あなたのアプリケーションは英語のみであるとあなたは言います):
そして、これがスキーマ定義に関する私の一般的なアドバイスです。テーブルごと、列ごと(ここでは、VARCHAR2
/NVARCHAR2
サンプルを取得します):
NVARCHAR2
にします。VARCHAR2
にします。しかし気をつけてください:
バージョン8.1.7以前のOracle Databaseクライアントおよびサーバーとの互換性のために必要な場合、またはアプリケーションベンダーから明示的に要求されない限り、データベース文字セットとしてUTF8という名前の文字セットを使用しないでください。非常によく似た名前を持っているにもかかわらず、UTF8はUnicodeエンコーディングUTF-8の適切な実装ではありません。 UTF-8処理が予想される場所でUTF8文字セットを使用すると、データの損失とセキュリティの問題が発生する可能性があります。これは、XMLやURLアドレスなどのWeb関連データに特に当てはまります。
OracleではAL32UTF8を推奨していますデータベースの文字セットとして。 AL32UTF8は、Unicode標準のUTF-8エンコーディングに対するOracleの名前です。
UTF8または他のUnicode文字セットを使用しない動機はありますか?
1つだけ。現在の文字セットエンコーディングを保証できない既存のデータセットがあります。
その場合、おそらくそれを修正し、UTF8を使用したいと思うでしょう。
いいえ、まったくありません。
冗談半分:はい、UTFを知らない古いクライアントとはもう接続できません。