orcle关于数据库字符集和乱码问题

   关键在于操作系统字符集、客户端字符集、数据库字符集这三者的关系

(1)操作系统字符集

查看方法:windows cmd窗口输入chcp 

活动代码页(编码字符集的别名)

936 代表简体中文,GB2312字符集

(2)客户端字符集

修改注册表nls_lang 项的characterset ;

或设置设置环境变量NLS_LANG

查看:select userenv('language') from dual; --这是此次会话的编码,将环境变量NLS_LANG设置为这个查询结果就不会乱码。

(3)数据库字符集

这是服务器上数据库的字符集

在sql窗口 select * from NLS_DATABASE_PARAMETERS 可以查看;

        往一张表里insert数据,其实会做2次转换,首先是从操作系统-->客户端,再客户端-->服务端。(后者一般不发生,因为字符集一般保持一致)

        【比如:操作系统字符集:windows默认的简体中文GB2312

客户端、服务器端字符集(一般保持一致)为AL32UTF8

        insert ’你好‘  由C4E3 BAC3-->e4,bd,a0  e5,a5,bd

        查询时也会做转换,是上述的逆过程。

        决定显示字符的是操作系统的字符集,操作系统必须能将客户端的编码正确解码,才能正确显示字符,否则就会出现乱码。

        随着软件的升级,现在一般常用字符集间都能映射,比如客户端AL32UTF8 操作系统GB2312,也能正常显示。似乎很少出现乱码问题啦(除非你去改数据库的编码,那么旧数据可能会乱码)。

        好像一般也不用想那么多,只要数据库、操作系统设成支持中文的编码就好。乱码问题一般客户端软件就能帮你搞定啦。

参考文章:搞懂字符集 -- cnDBA.cn_中国DBA社区

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值