在Oracle 11g XE上更改NLS字符集参数

时间:2014-05-21 09:26:51

标签: sql oracle oracle11g oracle-apex oracle-xe

我正在使用Oracle 11g Express Edition。目前,当我使用SELECT * FROM nls_database_parameters;检查NLS字符集参数时,它会提供默认值:

NLS_CHARACTERSET: AL32UTF8
NLS_NCHAR_CHARACTERSET: AL16UTF16

我想将这两个参数设置为UTF8。我怎么能这样做?我刚刚安装了Oracle 11g XE,因此除了Oracle本身所需的数据之外没有数据。

4 个答案:

答案 0 :(得分:3)

这适用于我正在检查 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

答案 1 :(得分:2)

也许这有效:alter database character set UTF8;

但是,你确定要改变吗? AL32UTF8 实际上是 UTF-8。

在Oracle上你还有一个名为UTF8的字符集,这是一种用词不当,意味着字符集CESU-8。据我所知,这就像1999年的Unicode版本3中的" UTF-8"。只要您使用小于65535的Unicode字符(基本多语种平面)AL32UTF8UTF8相同。

注意,仅当新字符集是旧字符集的严格超集时,此命令才有效。即您可以从US7ASCII更改为AL32UTF8WE8ISO8859P1,但无法从WE8ISO8859P1更改为AL32UTF8

答案 2 :(得分:0)

设置安装后便无法更改character set。如果要更改,则需要花很长的时间来提高Oracle的SR。

答案 3 :(得分:-2)

SQL> shutdown immediate;

SQL> startup restrict

SQL> select name from v$database;

SQL> ALTER DATABASE CHARACTER SET INTERNAL_USE WE8MSWIN1252 ;

SQL> select value from NLS_DATABASE_PARAMETERS where parameter=’NLS_CHARACTERSET’;

SQL> shutdown immediate;

SQL> startup

SQL> select value from NLS_DATABASE_PARAMETERS where parameter=’NLS_CHARACTERSET’;