什么是Oracle字符集?
Oracle字符集是一个字节数据的解释的符号集合,有大小之分,有相互的包容关系。ORACLE 支持国家语言的体系结构允许你使用本地化语言来存储,处理,检索数据。它使数据库工具,错误消息,排序次序,日期,时间,货币,数字,和日历自动适应本地化语言和平台。
影响Oracle数据库字符集最重要的参数是NLS_LANG参数。
它的格式如下: NLS_LANG = language_territory.charset
它有三个组成部分(语言、地域和字符集),每个成分控制了NLS子集的特性。
其中:
Language: 指定服务器消息的语言, 影响提示信息是中文还是英文
Territory: 指定服务器的日期和数字格式
charset:指定字符集
从NLS_LANG的组成我们可以看出,真正影响数据库字符集的其实是第三部分。所以两个数据库之间的字符集只要第三部分一样就可以导入导出数据,前面影响的只是提示的信息是中文还是英文。
字符编码方案:
单字节编码,多字节编码,unicode编码(UTF-8,UTF-16)。
数据库字符集:
数据库字符集在创建数据库时指定,在创建后通常不能修改,在创建数据库时,可以指定字符集(CHARACTER SET)和国家字符集(NATIONAL CHARACTER SET)。
字符集:
(1)用来存储CHAR, VARCHAR2, CLOB, LONG等类型数据
(2)用来标示诸如表名、列名以及PL/SQL变量等
(3)用来存储SQL和PL/SQL程序单元等
查询字符集参数:
可以查询以下数据字典或视图查看字符集设置情况nls_database_parameters、props$、v$nls_parameters
NLS_CHARACTERSET表示字符集,NLS_NCHAR_CHARACTERSET表示国家字符集
修改数据库字符集:
按照上文所说,数据库字符集在创建后原则上不能更改。不过有2种方法可行。
(1) 如果需要修改字符集,通常需要导出数据库数据,重建数据库,再导入数据库数据的方式来转换。
(2) 通过ALTER DATABASE CHARACTER SET语句修改字符集,但创建数据库后修改字符集是有限制的,只有新的字符集是当前字符集的超集时才能修改数据库字符集,例如UTF8是US7ASCII的超集,修改数据库字符集可使用ALTER DATABASE CHARACTER SET UTF8。
问题:
服务器已经配置好了oracle数据库,连接的时候木有问题,为什么查询表中中文字符全部变成"�����������������������"?
解决方案:
解决状态:未解决,等待修改。