网站项目怎么做,合肥百度团购网站建设,网站开发与维护的工资,seo推广网络项目场景#xff1a;
Oracleoracle中文显示???解决办法
问题描述 原因分析#xff1a;
Oracle中文显示???通常是由于字符集不匹配或者编码问题导致的。当数据库中的数据使用的是某种字符集#xff0c;而客户端或者应用程序使用的是另一种字符集时#xff0c;就会出…项目场景
Oracleoracle中文显示???解决办法
问题描述 原因分析
Oracle中文显示???通常是由于字符集不匹配或者编码问题导致的。当数据库中的数据使用的是某种字符集而客户端或者应用程序使用的是另一种字符集时就会出现中文显示乱码的情况。
另外如果数据库中的数据本身就是损坏的或者不完整的也有可能导致中文显示乱码的问题。
总的来说中文显示乱码的原因主要包括字符集不匹配、编码问题、数据损坏等。 解决方案
1、不同解决思路 修改NLS_LANG环境变量将NLS_LANG环境变量设置为正确的字符集例如NLS_LANGAMERICAN_AMERICA.ZHS16GBK。 修改Oracle客户端的字符集在Oracle客户端中可以通过修改NLS_LANG参数来设置字符集例如ALTER SESSION SET NLS_LANGAMERICAN_AMERICA.ZHS16GBK。 修改数据库的字符集如果数据库的字符集不是UTF-8或者GBK可以考虑修改数据库的字符集。 使用Unicode字符集Unicode字符集支持多种语言包括中文可以解决中文乱码问题。 使用Java程序连接Oracle如果使用Java程序连接Oracle可以在连接Oracle时指定字符集例如jdbc:oracle:thin:localhost:1521:orcl?useUnicodetruecharacterEncodingUTF-8。 使用PL/SQL Developer等工具一些Oracle数据库管理工具支持中文显示例如PL/SQL Developer可以在工具的设置中修改字符集。
2、具体解决过程 查看数据库字符集select userenv(language) from dual; SQL select userenv(language) from dual;USERENV(LANGUAGE)
----------------------------------------------------
AMERICAN_AMERICA.ZHS16GBKSQL 查询系统字符集locale [oraclelocalhost ~]$ locale
LANGen_US.UTF-8
LC_CTYPEen_US.UTF-8
LC_NUMERICen_US.UTF-8
LC_TIMEen_US.UTF-8
LC_COLLATEen_US.UTF-8
LC_MONETARYen_US.UTF-8
LC_MESSAGESen_US.UTF-8
LC_PAPERen_US.UTF-8
LC_NAMEen_US.UTF-8
LC_ADDRESSen_US.UTF-8
LC_TELEPHONEen_US.UTF-8
LC_MEASUREMENTen_US.UTF-8
LC_IDENTIFICATIONen_US.UTF-8
LC_ALL
[oraclelocalhost ~]$ 将数据库字符集修改为与系统字符集一致也可修改系统字符集与数据库字符集一致 SQL shutdown immediate
SQL startup nomount
SQL alter database mount exclusive; //装载数据为专用的高级模式;
SQL alter system enable restricted session; //启用受限制的session模式
SQL alter system set job_queue_processes0; //maximum number of job queue slave processes 设置工作队列的最大进程数为0
SQL alter system set aq_tm_processes0;
SQL alter database open;
SQL alter database character set internal_use utf8;; // 设置为自己所需字符集即可
SQL shutdown immediate
SQL startup注意已经存在的数据在修改了字符集之后还是会显示为乱码只有新插入的数值才会生效