oracle utf-8中文乱码,修改Oracle字符集为UTF-8 解决中文乱码 oracle
很多情况下,遇到数据库查询数据中文乱码,一般都是字符集的问题,下面记录一下oracle字符集的查看方法,并提供UTF-8字符集的修改方式。
1、查看数据库字符集
以下操作均在sqlplus或客户端中执行
数据库服务器字符集:
select * from nls_database_parameters;
其来源于props$,是表示数据库的字符集。
客户端字符集环境:
select * from nls_instance_parameters;
其来源于v$parameter,
表示客户端的字符集的设置,可能是参数文件,环境变量或者是注册表
会话字符集环境:
select * from nls_session_parameters;
其来源于v$nls_parameters,表示会话自己的设置,可能是会话的环境变量或者是alter session完成,如果会话没有特殊的设置,将与nls_instance_parameters一致。
重要提示:
客户端的字符集要求与服务器一致,才能正确显示数据库的非Ascii字符。
如果多个设置存在的时候:
alter session>环境变量>注册表>参数文件
2、修改oracle的字符集为UTF-8
① 在SQL PLUS 中,以DBA登录
conn sys/sys as sysdba;
② 执行转换语句:
SHUTDOWN IMMEDIATE; --先关掉数据库
STARTUP MOUNT EXCLUSIVE;
ALTER SYSTEM ENABLE RESTRICTED SESSION;
ALTER SYSTEM SET JOB_QUEUE_PROCESSES=0;
ALTER SYSTEM SET AQ_TM_PROCESSES=0;
ALTER DATABASE OPEN;
ALTER DATABASE NATIONAL CHARACTER SET AL32UTF8; --此处修改字符集关键语句
SHUTDOWN immediate; --修改完毕后重启数据库
STARTUP;
注意:
如果没有大对象,在使用过程中进行语言转换没有什么影响,(切记设定的字符集必须是ORACLE支持,不然不能start)
上述过程可能会出现提示:
ORA-12717: Cannot ALTER DATABASE NATIONAL CHARACTER SET when NCLOB data exists
要解决这个问题有两种方法:
(1) 利用INTERNAL_USE关键字修改区域设置
SHUTDOWN IMMEDIATE; --同样需要关闭数据库
STARTUP MOUNT EXCLUSIVE;
ALTER SYSTEM ENABLE RESTRICTED SESSION;
ALTER SYSTEM SET JOB_QUEUE_PROCESSES=0;
ALTER SYSTEM SET AQ_TM_PROCESSES=0;
ALTER DATABASE OPEN;
ALTER DATABASE NATIONAL CHARACTER SET INTERNAL_USEAL32UTF8; --此处加上了INTENAL_USER
SHUTDOWN immediate;
startup;
(2)利用re-create,但是re-create有点复杂,我也不会(逃)
③ 如果上面的方法执行有问题
可以在sqlplus中强制转换执行如下语句
update sys.props$ set value$= 'AL32UTF8' WHERE name = 'NLS_CHARACTERSET';
commit;
然后重新启动oracle或者重新启动Linux系统。
一定要再执行如下代码:
SHUTDOWN IMMEDIATE;
STARTUP MOUNT;
ALTER SYSTEM ENABLE RESTRICTED SESSION;
ALTER SYSTEM SET JOB_QUEUE_PROCESSES=0;
ALTER SYSTEM SET AQ_TM_PROCESSES=0;
ALTER DATABASE OPEN;
COL VALUE NEW_VALUE CHARSET
SELECT VALUE FROM NLS_DATABASE_PARAMETERS WHERE PARAMETER='NLS_CHARACTERSET';
COL VALUE NEW_VALUE NCHARSET
SELECT VALUE FROM NLS_DATABASE_PARAMETERS WHERE PARAMETER='NLS_NCHAR_CHARACTERSET';
--INTERNAL_USE是没有写在文档中的参数,用以强制完成字符集一致化
ALTER DATABASE CHARACTER SET INTERNAL_USE &CHARSET;
ALTER DATABASE NATIONAL CHARACTER SET INTERNAL_USE &NCHARSET;
SHUTDOWN IMMEDIATE;
STARTUP;
-- 再次启动数据库一遍
SHUTDOWN IMMEDIATE;
STARTUP;
至此,EXP问题得到了解决。
注意:修改字符集只是修改了数据字典,并没有对数据进行字符集转换!
④ 如果语言环境不一致,语言环境同时更新掉:
update sys.props$ set value$= 'SIMPLIFIED CHINESE' WHERE name = 'NLS_LANGUAGE';
update sys.props$ set value$= 'SIMPLIFIED CHINESE' WHERE name = 'NLS_DATE_LANGUAGE';
update sys.props$ set value$= 'CHINA' WHERE name = 'NLS_TERRITORY';
update sys.props$ set value$= 'CHINA' WHERE name = 'NLS_ISO_CURRENCY';
update sys.props$ set value$= '?' WHERE name = 'NLS_CURRENCY';
update sys.props$ set value$= '?' WHERE name = 'NLS_DUAL_CURRENCY';
commit;
oracle utf-8中文乱码,修改Oracle字符集为UTF-8 解决中文乱码 oracle相关推荐
- mysql过滤乱码_FaceBook专家:10分钟彻底解决MySQL乱码问题?
目录 Part 1 字符集和字符编码 · 什么是字符集 · 什么是字符编码 · UTF-8和Unicode的关系 · UTF-8编码简介 · 为什么会出现乱码 · 如何识别乱码的本来想要表达的文字 · ...
- java 读取txt乱码_java 逐行读取txt文本如何解决中文乱码
java读取txt文本中如含有中文,可能会出现乱码,解决方案是: 1.要统一编码,java工程的编码,txt文本编码,java工程中的java文本编码都统一为utf-8: 2.利用 InputStre ...
- 修改tomcat的conf/server.xml解决网页乱码
--后台 转码 str= new String(str.getBytes("iso8859-1"),"gb2312"); str= new String(str ...
- java调用 restapi 乱码_Java HttpURLConnection模拟请求Rest接口解决中文乱码问题
public staticString PostRequest(String URL,String obj) { String jsonString="";try{//创建连接 U ...
- linux 编辑文件乱码,Linux 下 vim 编辑文件,解决中文乱码,设置Tab键空格数
HTML5 图片本地压缩上传插件「localResizeIMG」 移动应用中用户往往需要上传照片,但是用户上传的照片尺寸通常很大,而手机的流量却很有限,所以在上传前对图像进行压缩是很有必要的. 原生应 ...
- 原创:PHP乱码怎么办?五种方法彻底解决PHP乱码问题
对于刚接触PHP的新手来说,乱码可能会让你边临崩溃,但是你要习惯,既然想学好PHP,乱码是家常便饭,不管是老鸟还是新手,都会遇到乱码的问题,下面是我总结的几个常见并且有效的解决方法: 方法一:检查HT ...
- Linux下MySQL数据库乱码 Linux下MySQL修改默认字符集
MySQL8.0默认字符集编码utf8mb4 使用以下命令查看默认字符集编码(在MySQL下使用) show variables like '%character%'; ±-------------- ...
- php oracle数据库连接池,数据库管理Oracle 连接池信息的修改
最近项目中用到的Oracle数据库在服务器上是建了多个表空间供不同系统使用,两个系统同时在使用过程中,正在开发的一个项目在测试运行时,时不时就出现连接池满了,连接不上的问题,为此查了下怎么修改Orac ...
- java button中文乱码_java解决中文乱码的几种写法
工作中总会遇到中文乱码问题,以导出文件,文件名称是中文的话,下载下来的文件名称会乱码问题,总结了几种解决文件名乱码的写法,仅供参考. 首先定义一个汉语字符串 String zhName = " ...
- php utf-8读取,PHP读取文件,解决中文乱码UTF-8的方法分析
PHP读取文件,解决中文乱码UTF-8的方法分析,方法,中文,操作技巧,文本,本文 PHP读取文件,解决中文乱码UTF-8的方法分析 易采站长站,站长之家为您整理了PHP读取文件,解决中文乱码UTF- ...
最新文章
- 2.4G高频PCB天线设计
- java接口 密钥签名作用_api接口签名加密请求(二)
- CodeSmith实用技巧(二):使用FileNameEditor
- mysql大表myisam的导入
- 安装Putty远程终端连接工具
- hive hql文档_大数据学习路线分享hive的运行方式
- 深入浅出项目管理——例子
- java 建立ssh隧道_如何使用IntelliJ和JDBC SSH隧道并连接到数据库?
- vue项目中vue-router的使用
- window10安装黑苹果
- aspose利用word模板生成word、PDF
- 《认知心理学》思维导图
- 铁路、公路施工企业劳务实名制管理系统解决方案
- 计蒜客--T1212 仙岛求药
- python上传数据到坚果云_坚果云功能
- 无人机技术的发展与应用
- 在 MySQL 数据库中删除重复记录的步骤
- 平行时空 平行宇宙 多元宇宙
- Windows窗口及对话框
- Unity新手必备5款宝藏插件--价值上千元白嫖最新版
热门文章
- Vegas Pro 18官方中文版激活序列号版下载,为何能成为大神级剪辑师的首选?
- html5 文字滑动特效代码,三种网页状态栏文字滚动特效代码
- EIS防抖-电子防抖技术
- 联想拯救者R7000+加装SSD+原D盘信息复制分区到新SSD
- 运筹优化(九)--整数规划模型
- To display the conditions report re-run your application with 'debug' enabled.
- 蒙哥马利基2的Python算法实现(大数模乘)
- 深度学习 Keras入门 一 之基础篇
- summernote富文本编辑器的基本使用
- 使用ls命令查看Linux的目录结构,linux ls命令查看目录文件详解