在使用ORACLE数据库的时候,常常连上数据库出现乱码的现象出现,原因:客户端的字符串集和数据库的不一直. 要取的数据库的字符集,并把客户端的字符集设置和数据库一直即可.取得的方法: 1.SQL: select value,parameter from nls_database_parameters where parameter in('NLS_LANGUAGE','NLS_TERRITORY','NLS_CHARACTERSET'); 依此组装即可,"NLS_LANGUAGE_NLS_TERRITORY.NLS_CHARACTERSET"。 2.创建procedure : create or replace procedure get_nls is -- Local variables here langs varchar2(128) ; loc varchar2(128); charset varchar2(128); begin -- Test statements here select value into langs from nls_database_parameters where parameter='NLS_LANGUAGE'; select value into loc from nls_database_parameters where parameter='NLS_TERRITORY'; select value into charset from nls_database_parameters where parameter='NLS_CHARACTERSET'; -- Sure that :set serveroutput on DBMS_OUTPUT.PUT_LINE(langs||'_'||loc||'.'||charset); end get_nls; 1).SQL中执行如下,即可查出: SQL> execute get_nls(); AMERICAN_AMERICA.AL32UTF8 2).如果没有显示,请设置数据库为显示输出为ON,如下: SQL> set serveroutput on 3.涉及到NLS信息的视图有: nls_database_parameters,nls_instance_parameters,nls_session_parameters也可查询参考。 4.设置客户端的字符集,打开注册表:找到如下相关项:HKEY_LOCAL_MACHINE\SOFTWARE\ORACLE 找到LAST HOME如:HOME0 修改HOME0中的NLS_LANG 为查出的字符集:AMERICAN_AMERICA.AL32UTF8

评论