oracle 服务端修改字符集
客户端配置NLS_LANG说明
如果发现你select 出来的数据是乱码,请把client端的NSL_LANG配置成与linux操作系统相同的字符集。如果还是有乱码,则有可能是数据库中的数据存在问题,或者是oracle服务端的配置存在问题。
例如:
[oracle@i-0be14e11 ~]$ locale
LANG=zh_CN.UTF-8
LC_CTYPE="zh_CN.UTF-8"
LC_NUMERIC="zh_CN.UTF-8"
LC_TIME="zh_CN.UTF-8"
LC_COLLATE="zh_CN.UTF-8"
LC_MONETARY="zh_CN.UTF-8"
LC_MESSAGES="zh_CN.UTF-8"
LC_PAPER="zh_CN.UTF-8"
LC_NAME="zh_CN.UTF-8"
LC_ADDRESS="zh_CN.UTF-8"
LC_TELEPHONE="zh_CN.UTF-8"
LC_MEASUREMENT="zh_CN.UTF-8"
LC_IDENTIFICATION="zh_CN.UTF-8"
LC_ALL=
在客户端中查询到 LANG=zh_CN.UTF-8,则客户端的NSL_LANG应配置为SIMPLIFIED CHINESE_CHINA.AL32UTF8
NSL_LANG不是设置客户端的字符集,而是告诉oracle服务端客户端使用什么字符集,oracle服务端返回给客户端的字符集为客户端设置的NSL_LANG,oracle服务端会自动转码。所以只要保证客户端设置的NSL_LANG与客户端的编码相对应,一般就没有那么多奇奇怪怪乱码的问题。
操作系统locale 对应的 NLS_LANG
Language | Locale ID | NLS_LANG |
---|---|---|
English (American) |
en_US.UTF-8 |
|
English (American) |
en_US.ISO-8859-1 |
|
English (American) |
en_US.ISO-8859-15 |
|
English (Australian) |
en_AU.UTF-8 |
|
English (Australian) |
en_AU.ISO-8859-1 |
|
English (Australian) |
en_AU.ISO-8859-15 |
|
English (British) |
en_GB.UTF-8 |
|
English (British) |
en_GB.ISO-8859-1 |
|
English (British) |
en_GB.ISO-8859-15 |
|
English (Ireland) |
en_IE.UTF-8 |
|
English (Ireland) |
en_IE.ISO-8859-1 |
|
English (Ireland) |
en_IE.ISO-8859-15 |
|
German |
de_DE.UTF-8 |
|
German |
de_DE.ISO-8859-1 |
|
German |
de_DE.ISO-8859-15 |
|
French |
fr_FR.UTF-8 |
|
French |
fr_FR.ISO-8859-1 |
|
French |
fr_FR.ISO-8859-15 |
|
Italian |
it_IT.UTF-8 |
|
Italian |
it_IT.ISO-8859-1 |
|
Italian |
it_IT.ISO-8859-15 |
|
Spanish |
es_ES.UTF-8 |
|
Spanish |
es_ES.ISO-8859-1 |
|
Spanish |
es_ES.ISO-8859-15 |
|
Spanish (Mexico) |
es_MX.UTF-8 |
|
Spanish (Mexico) |
es_MX.ISO-8859-1 |
|
Spanish (Mexico) |
es_MX.ISO-8859-15 |
|
Portuguese (Brazilian) |
pt_BR.UTF-8 |
|
Portuguese (Brazilian) |
pt_BR.ISO-8859-1 |
|
Portuguese (Brazilian) |
pt_BR.ISO-8859-15 |
|
Japanese |
ja_JP.EUC-JP |
|
Japanese |
ja_JP.UTF-8 |
|
Korean |
ko_KR.EUC-KR |
|
Korean |
ko_KR.UTF-8 |
|
Chinese (simplified) |
zh_CN.GB18030 |
|
Chinese (simplified) |
zh_CN.UTF-8 |
|
Chinese (traditional) |
zh_TW.BIG5 |
|
Chinese (traditional) |
zh_TW.UTF-8 |
|
server端字符集修改
更改字符集步骤方法(WE8ISO8859P1 --> ZHS16GBK)
开始 - 运行 - 输入cmd 进入命令提示符
-- 以管理员身份登录sqlplus
sqlplus / as sysdba;
-- 关闭数据库
shutdown immediate;
-- 将数据库启动到mout模式
startup mount
-- 数据库受限模式,在这个模式下只有RESTRICTED SESSION 权限的人才可以登陆,一般用与数据库维护的时候使用。
ALTER SYSTEM ENABLE RESTRICTED SESSION;
-- 让JOB没有调度进程,不会run。防止有任务自动启动执行 (可以不设置)
ALTER SYSTEM SET JOB_QUEUE_PROCESSES=0;
-- 关闭队列监视器(可以不设置)
ALTER SYSTEM SET AQ_TM_PROCESSES=0;
-- 将数据库启动到open模式
alter database open;
-- 修改字符集(新字符集必须为旧字符集的超集,这时我们可以跳过超集的检查做更改)
ALTER DATABASE character set INTERNAL_USE ZHS16GBK;
-- 查看字符集
select * from v$nls_parameters;
-- 重启再查看
shutdown immediate;
startup
-- 修改客户端的环境变量
-- linux下修改环境变量(临时)
-- export NLS_LANG=“SIMPLIFIED Chinese_CHINA.ZHS16GBK”
-- 如果是windows,按照以下方法添加或者修改,在系统变量中添加如下信息:
-- 变量名:NLS_LANG
-- 变量值:SIMPLIFIED Chinese_CHINA.ZHS16GBK
本文地址:https://blog.csdn.net/qq_41360111/article/details/110622015
上一篇: DCGAN从入门到放弃—生成炮姐头像
推荐阅读
-
Oracle中在pl/sql developer修改表的2种方法
-
oracle修改SGA后无法启动问题分析及解决方法
-
oracle xe 字符集修改成 ZHS16GBK 的方法
-
[Oracle]Oracle数据库数据被修改或者删除恢复数据
-
Oracle数据库多表联合修改的三种语句方法介绍
-
ubuntu下mysql修改字符集latin1为utf-8
-
Oracle修改字段类型报错:“ORA-01439:要更改数据类型,则要修改的列必须为空”
-
Oracle创建表、删除表、修改表(添加字段、修改字段、删除字段)语句总结
-
Oracle查看和修改连接数(进程/会话/并发等等)
-
计算机名称修改后Oracle不能正常启动问题分析及解决