很多情况下,遇到数据库查询数据中文乱码,一般都是字符集的问题,下面记录一下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相关推荐

  1. mysql过滤乱码_FaceBook专家:10分钟彻底解决MySQL乱码问题?

    目录 Part 1 字符集和字符编码 · 什么是字符集 · 什么是字符编码 · UTF-8和Unicode的关系 · UTF-8编码简介 · 为什么会出现乱码 · 如何识别乱码的本来想要表达的文字 · ...

  2. java 读取txt乱码_java 逐行读取txt文本如何解决中文乱码

    java读取txt文本中如含有中文,可能会出现乱码,解决方案是: 1.要统一编码,java工程的编码,txt文本编码,java工程中的java文本编码都统一为utf-8: 2.利用 InputStre ...

  3. 修改tomcat的conf/server.xml解决网页乱码

    --后台 转码 str= new String(str.getBytes("iso8859-1"),"gb2312"); str= new String(str ...

  4. java调用 restapi 乱码_Java HttpURLConnection模拟请求Rest接口解决中文乱码问题

    public staticString PostRequest(String URL,String obj) { String jsonString="";try{//创建连接 U ...

  5. linux 编辑文件乱码,Linux 下 vim 编辑文件,解决中文乱码,设置Tab键空格数

    HTML5 图片本地压缩上传插件「localResizeIMG」 移动应用中用户往往需要上传照片,但是用户上传的照片尺寸通常很大,而手机的流量却很有限,所以在上传前对图像进行压缩是很有必要的. 原生应 ...

  6. 原创:PHP乱码怎么办?五种方法彻底解决PHP乱码问题

    对于刚接触PHP的新手来说,乱码可能会让你边临崩溃,但是你要习惯,既然想学好PHP,乱码是家常便饭,不管是老鸟还是新手,都会遇到乱码的问题,下面是我总结的几个常见并且有效的解决方法: 方法一:检查HT ...

  7. Linux下MySQL数据库乱码 Linux下MySQL修改默认字符集

    MySQL8.0默认字符集编码utf8mb4 使用以下命令查看默认字符集编码(在MySQL下使用) show variables like '%character%'; ±-------------- ...

  8. php oracle数据库连接池,数据库管理Oracle 连接池信息的修改

    最近项目中用到的Oracle数据库在服务器上是建了多个表空间供不同系统使用,两个系统同时在使用过程中,正在开发的一个项目在测试运行时,时不时就出现连接池满了,连接不上的问题,为此查了下怎么修改Orac ...

  9. java button中文乱码_java解决中文乱码的几种写法

    工作中总会遇到中文乱码问题,以导出文件,文件名称是中文的话,下载下来的文件名称会乱码问题,总结了几种解决文件名乱码的写法,仅供参考. 首先定义一个汉语字符串 String zhName = " ...

  10. php utf-8读取,PHP读取文件,解决中文乱码UTF-8的方法分析

    PHP读取文件,解决中文乱码UTF-8的方法分析,方法,中文,操作技巧,文本,本文 PHP读取文件,解决中文乱码UTF-8的方法分析 易采站长站,站长之家为您整理了PHP读取文件,解决中文乱码UTF- ...

最新文章

  1. 2.4G高频PCB天线设计
  2. java接口 密钥签名作用_api接口签名加密请求(二)
  3. CodeSmith实用技巧(二):使用FileNameEditor
  4. mysql大表myisam的导入
  5. 安装Putty远程终端连接工具
  6. hive hql文档_大数据学习路线分享hive的运行方式
  7. 深入浅出项目管理——例子
  8. java 建立ssh隧道_如何使用IntelliJ和JDBC SSH隧道并连接到数据库?
  9. vue项目中vue-router的使用
  10. window10安装黑苹果
  11. aspose利用word模板生成word、PDF
  12. 《认知心理学》思维导图
  13. 铁路、公路施工企业劳务实名制管理系统解决方案
  14. 计蒜客--T1212 仙岛求药
  15. python上传数据到坚果云_坚果云功能
  16. 无人机技术的发展与应用
  17. 在 MySQL 数据库中删除重复记录的步骤
  18. 平行时空 平行宇宙 多元宇宙
  19. Windows窗口及对话框
  20. Unity新手必备5款宝藏插件--价值上千元白嫖最新版

热门文章

  1. Vegas Pro 18官方中文版激活序列号版下载,为何能成为大神级剪辑师的首选?
  2. html5 文字滑动特效代码,三种网页状态栏文字滚动特效代码
  3. EIS防抖-电子防抖技术
  4. 联想拯救者R7000+加装SSD+原D盘信息复制分区到新SSD
  5. 运筹优化(九)--整数规划模型
  6. To display the conditions report re-run your application with 'debug' enabled.
  7. 蒙哥马利基2的Python算法实现(大数模乘)
  8. 深度学习 Keras入门 一 之基础篇
  9. summernote富文本编辑器的基本使用
  10. 使用ls命令查看Linux的目录结构,linux ls命令查看目录文件详解