首先要查询出服务器端的oracle的语言环境

select userenv('language') nls_lang from dual

我这边查询出来的是:AMERICAN_AMERICA.UTF8

方法一:

在plsqldev.exe同级目录新建start.bat, 添加如下内容,每次启动的时候设置语言环境

rem 解决64位下plsql乱码问题  
set NLS_LANG=AMERICAN_AMERICA.UTF8
start plsqldev.exe

从此以后使用start.bat启动plsql

另外批处理中start和call的一点区别:

start启动完程序后控制台窗口退出, call调用完程序后控制台窗口不退出。


方法二:

通过设置系统级环境变量来解决乱码(以下是plsql使用32位的客户端连接数据库)

右击"我的电脑" - "属性" - "高级" - "环境变量" - "系统环境变量":

 1>.选择"Path" - 点击"编辑", 把 "E:\dbserver\oracle11\product\instantclient_12_1;" 加入;

 2>.点击"新建", 变量名设置为"TNS_ADMIN", 变量值设置为"E:\dbserver\oracle11\product\instantclient_12_1;", 点击"确定";

 3>.点击"新建", 变量名设置为"NLS_LANG", 变量值设置为"AMERICAN_AMERICA.UTF8", 点击"确定";

 最后点击"确定"退出.