问题描述
- 中文乱码。
- 中文显示没有乱码,中文作为条件无法查询。
- like无法查询出中文内容。
问题原因
以上三种情况是因为Oracle客户端和服务器端的编码方式不一样导致。
解决办法
首先要查询Oracle服务器的语言、地域和字符集,然后将查询结果设置为本地的环境变量:NLS_LANG,具体如下:
-
查询Oracle服务器的语言、地域和字符集
1
select * from nls_database_parameters;
查询结果中:
NLS_LANGUAGE
表示语言
,NLS_TERRITORY
表示地域
NLS_CHARACTSET
表示字符集
将他们三个按照
语言_地域.字符集
的格式拼接起来,就有了AMERICAN_AMERICA.AL32UTF8
(注意:这里要根据你自己的Oracle服务器的这三个值进行拼接) -
设置本地环境变量(PLSQL优先从环境变量中获取属性),右击
我的电脑 -> 属性 -> 高级系统设置-> 环境变量 -> 系统变量栏
,新增如下记录:1
NLS_LANG = AMERICAN_AMERICA.AL32UTF8