Oracle 11g ExpressEditionを使用しています。現在、SELECT * FROM nls_database_parameters;
を使用してNLS文字セットパラメータをチェックすると、デフォルト値が表示されます。
NLS_CHARACTERSET: AL32UTF8
NLS_NCHAR_CHARACTERSET: AL16UTF16
これらのパラメーターを両方ともUTF8に設定したいと思います。どうすればよいですか? Oracle 11g XEをインストールしたばかりなので、Oracle自体に必要なデータ以外のデータはありません。
これは、アプリケーションがUTF8 rather than AL32UTF8
。
SQL> shutdown immediate;
SQL> startup restrict
SQL> select name from v$database;
SQL> ALTER DATABASE CHARACTER SET INTERNAL_USE UTF8 ;
SQL> select value from NLS_DATABASE_PARAMETERS
where parameter=’NLS_CHARACTERSET’;
SQL> shutdown immediate;
SQL> startup
多分これはうまくいく: -> Oracle10.1以降ではサポートされなくなりました。alter database character set UTF8;
しかし、本当に変更してもよろしいですか? AL32UTF8
isUTF-8、実際には。
Oracleには、UTF8
という文字セットもあります。これは一種の誤称であり、文字セット CESU-8 を意味します。私の知る限り、これは「1999年のUnicodeバージョン3のUTF-8」のようなものです。 65535(Basic Multilingual Plane)未満のUnicode文字を使用している限り、AL32UTF8
とUTF8
は同じです。
このコマンドは、新しい文字セットが古い文字セットの厳密なスーパーセットである場合にのみ機能することに注意してください。つまりUS7ASCII
からAL32UTF8
またはWE8ISO8859P1
に変更できますが、WE8ISO8859P1
からAL32UTF8
に変更することはできません。
インストールを設定すると、 文字セット を変更することはできません。変更したい場合は、OracleでSRを上げる必要がある長い手順があります。