Oracle-Linux-SqlPlus-Garbled-Code-1
Oracle 数据库 sqlplus 乱码问题
问题的引出
当我们 sqlplus 进入数据库,所有的提示都是问号 或者是乱码,说明我们客户端的字符集不是英文 , 并且我们终端的字符集 与 sqlplus 建立数据库连接的字符集不同。
Oracle server 端字符集
1 2 3
| select userenv('language') from dual;
SELECT * FROM V$NLS_PARAMETERS WHERE PARAMETER ='NLS_LANGUAGE';
|
解决方式 说明
1 2
| 1、我们只需要将 sqlplus 中 会话的字符集更改为 英文即可,不过这需要你习惯英文。 2、如果你不习惯英文界面,那么你就需要将终端的字符集 和 sqlplus 数据库 session 会话的字符集更改一致。
|
1、Linux bash 脚本环境下,设置 NLS_LANG 环境变量
常用的字符集
1 2
| SIMPLIFIED CHINESE_CHINA.UTF8 AMERICAN_AMERICA.AL32UTF8
|
1
| export NLS_LANG="SIMPLIFIED CHINESE_CHINA.UTF8"
|
2、Window 命令行下面的配置
1 2 3 4 5 6
| # 常用中文字符集 set NLS_LANG=SIMPLIFIEDCHINESE_CHINA.ZHS16GBK # 常用unicode字符集 set NLS_LANG=american_america.AL32UTF8 # 可以通过修改注册表键值永久设置, 这边的 xx 代表的是 Oracle 的版本号 HKEY_LOCAL_MACHINE\SOFTWARE\ORACLE\HOMExx\NLS_LANG
|
3、在 sqlplus 会话中临时更改环境变量的值(我为了方便 更改 美国的字符集)
常用的字符集
1
| SIMPLIFIED CHINESEAMERICAN
|
1
| alter session set nls_language=american;
|
4、永久生效,直接更改数据库的 NLS_LANGUAGE 参数,须重启才能生效
1
| alter system set nls_language=american scope=spfile;
|