web-dev-qa-db-ja.com

Oracle 11gXEでNLS文字セットパラメータを変更する

Oracle 11g ExpressEditionを使用しています。現在、SELECT * FROM nls_database_parameters;を使用してNLS文字セットパラメータをチェックすると、デフォルト値が表示されます。

NLS_CHARACTERSET: AL32UTF8
NLS_NCHAR_CHARACTERSET: AL16UTF16

これらのパラメーターを両方ともUTF8に設定したいと思います。どうすればよいですか? Oracle 11g XEをインストールしたばかりなので、Oracle自体に必要なデータ以外のデータはありません。

5
Parth Bhagat

これは、アプリケーションが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
5
Gary

多分これはうまくいく:alter database character set UTF8; -> Oracle10.1以降ではサポートされなくなりました。

しかし、本当に変更してもよろしいですか? AL32UTF8isUTF-8、実際には。

Oracleには、UTF8という文字セットもあります。これは一種の誤称であり、文字セット CESU-8 を意味します。私の知る限り、これは「1999年のUnicodeバージョン3のUTF-8」のようなものです。 65535(Basic Multilingual Plane)未満のUnicode文字を使用している限り、AL32UTF8UTF8は同じです。

このコマンドは、新しい文字セットが古い文字セットの厳密なスーパーセットである場合にのみ機能することに注意してください。つまりUS7ASCIIからAL32UTF8またはWE8ISO8859P1に変更できますが、WE8ISO8859P1からAL32UTF8に変更することはできません。

2

インストールを設定すると、 文字セット を変更することはできません。変更したい場合は、OracleでSRを上げる必要がある長い手順があります。

0
Rosel