我正在使用Oracle 11g Express Edition。目前,当我使用SELECT * FROM nls_database_parameters;
检查NLS字符集参数时,它会提供默认值:
NLS_CHARACTERSET: AL32UTF8
NLS_NCHAR_CHARACTERSET: AL16UTF16
我想将这两个参数设置为UTF8。我怎么能这样做?我刚刚安装了Oracle 11g XE,因此除了Oracle本身所需的数据之外没有数据。
答案 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字符(基本多语种平面)AL32UTF8
和UTF8
相同。
注意,仅当新字符集是旧字符集的严格超集时,此命令才有效。即您可以从US7ASCII
更改为AL32UTF8
或WE8ISO8859P1
,但无法从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’;