《oracle马拉松》plsql篇-解决plsql中文乱码问题(查询显示问号???)

发布时间 2023-03-26 14:01:24作者: Fusio

问题描述

1、打开 plsql,执行 sql 语句,中文显示乱码:

---查询表中记录
select * from person;

image

解决办法:

1)查看服务器端编码
输入 sql 语句:

select userenv('language') from dual       -- 查看数据库字符集

image

我实际查到的结果为:AMERICAN_AMERICA.ZHS16GBK

2)执行 sql 语句 :

select * from V$NLS_PARAMETERS    -- 查看本地字符集

查看第一行中PARAMETER项中为NLS_LANGUAGE 对应的VALUE项中是否和第一步得到的值一样。如果不是,需要设置环境变量,否则PLSQL客户端使用的编码和服务器端编码不一致,插入中文时就会出现乱码.

image

我实际查到的为AMERICAN

3)设置环境变量
计算机->属性->高级系统设置->环境变量->新建
设置变量名:NLS_LANG,变量值:第1步查到的值,(这里的变量值需要与数据库服务器相同)
我的是 AMERICAN_AMERICA.ZHS16GBK

image

4)重新打开 plsql,执行 sql 语句,问题解决
image

过程中遇到的问题:
注:当完成以上4个步骤时,查询原来的记录还是问号????,只有新插入的记录才会正常显示。不知道这个怎么解决?