深入Oracle字符集的查看与修改详解?(oracle字符集不匹配如何解决)

2023-12-26 27阅读

深入Oracle字符集的查看与修改详解?

oracle服务器和客户端字符集的查看和修改

深入Oracle字符集的查看与修改详解?(oracle字符集不匹配如何解决)(图片来源网络,侵删)

一、什么是oracle字符集

Oracle字符集是一个字节数据的解释的符号集合,有大小之分,有相互的包容关系。ORACLE 支持国家语言的体系结构允许你使用本地化语言来存储,处理,检索数据。它使数据库工具,错误消息,排序次序,日期,时间,货币,数字,和日历自动适应本地化语言和平台。

影响oracle数据库字符集最重要的参数是NLS_LANG参数。

深入Oracle字符集的查看与修改详解?(oracle字符集不匹配如何解决)(图片来源网络,侵删)

它的格式如下:   NLS_LANG = language_territory.charset

它有三个组成部分(语言、地域和字符集),每个成分控制了NLS子集的特性。

其中:

深入Oracle字符集的查看与修改详解?(oracle字符集不匹配如何解决)(图片来源网络,侵删)

Language 指定服务器消息的语言,territory 指定服务器的日期和数字格式,charset 指定字符集。如:AMERICAN _ AMERICA. ZHS16GBK

从NLS_LANG的组成我们可以看出,真正影响数据库字符集的其实是第三部分。

如何把oracle数据库字符集改为utf-8?

本文对修改Oracle数据库字符集为UTF8的语句操作讲解:查看字符集selectuserenv('language')fromdual;1.conn/assysdba2.执行下面代码:SHUTDOWNIMMEDIATE;STARTUPMOUNTEXCLUSIVE;ALTERSYSTEMENABLERESTRICTEDSESSION;ALTERSYSTEMSETJOB_QUEUE_PROCESSES=0;ALTERSYSTEMSETAQ_TM_PROCESSES=0;ALTERDATABASEOPEN;(------------如果有问题请在此插入下面语句--------------)ALTERDATABASENATIONALCHARACTERSETUTF8;ALTERDATABASECHARACTERSETUTF8;SHUTDOWNimmediate;STARTUP;如果修改出现问题时请调用下面语句再执行一次就可以了ALTERDATABASENATIONALCHARACTERSETINTERNAL_USEUTF8;

为什么Oracle查询出来的字符串字段是乱码?

总结如下:

  1.数据库的查询出来的数据,是Oracle数据库字符集,Oracle客户端字符集,操作系统字符集共同作用的结果。

  2.Oracle存数据和查询数据都是通过Oracle数据库的字符集和Oracle客服端的字符集进行转换的,显示数据又是根据操作系统的字符集来确定的。

  3.为了避免出现乱码必须要把Oracle客户端的字符集和操作系统的字符集设置成一样的。

  

如何修改Oracle数据库字符集?

以DBA身份进入SQLPLUSSQLsqlplussys/sysassysdba;……SQLshutdownimmediate;SQLstartupmount;SQLaltersystemenablerestrictedsession;SQLaltersystemsetjob_queue_processes=0;SQLaltersystemsetaq_tm_processes=0;SQLalterdatabaseopen;SQLalterdatabasecharactersetinternal_useAL32UTF8;(ZHS16GBK)SQLshutdownimmediate;SQLstartup;这样就可以讲ORACLE的字符集修改为UTF8,如果需要修改为GBK只需将alterdatabasecharactersetinternal_useAL32UTF8;(ZHS16GBK)这句最后的AL32UTF8修改为ZHS16GBK即可

到此,以上就是小编对于oracle字符集不匹配是什么原因导致的的问题就介绍到这了,希望这4点解答对大家有用。

文章版权声明:除非注明,否则均为游侠云资讯原创文章,转载或复制请以超链接形式并注明出处。

目录[+]