始创于2000年 股票代码:831685
咨询热线:0371-60135900 注册有礼 登录
  • 挂牌上市企业
  • 60秒人工响应
  • 99.99%连通率
  • 7*24h人工
  • 故障100倍补偿
您的位置: 网站首页 > 帮助中心>文章内容

搞懂Oracle字符集的几个要点

发布时间:  2012/8/23 16:40:07

经常会遇到一些“为什么我的查询显示乱码?”或者“为什么我导入后中文变成乱码?”的问题,如果想彻底搞懂原因,需要研究下Oracle的字符集以及他们之间的转换的关系,还有OS字符集、NLS_LANG跟数据库字符集的关系。简单的总结下要搞懂的几个要点:
1. NLS_LANG<----->数据库:保证字符相同,存储的2进制可变。
OS<----->NLS_LANG:存储的2进制不变,字符可能显示不同。
-
 

2. 如果NLS_LANG设置成跟数据库字符集一样,则通过Oracle NET传递数据时存储的2进制不会发生转换。如果不一样,则会发生转换。
3. NLS_LANG并不是我们以为的用来显示给我们的字符的编码,真正用来显示的编码是OS编码,所以如果NLS_LANG跟OS编码不一样时,同一个2进制串可能就会由本来的‘你’显示成‘靠’。
4. 向数据库传递字符时应尽量将NLS_LANG设置成OS字符集,以保证输入的‘我’到NLS_LANG一层不会发生字符变化,从而保证到数据库端存储的就是‘我’;
不过使用EXP等客户端工具导出时,应尽量将NLS_LANG设置成数据库字符集,以保证导出时数据原封不动,不会发生数据丢失的可能。导入时也应尽量将NLS_LANG设成导出文件的字符集,以保证将转换移至传输到数据库的一步。(EXP,IMP也可能会发生数据丢失问题,具体要看源数据库,EXP客户端NLS_LANG,IMP客户端NLS_LANG,目标数据库的字符集)

5.其实乱码,说到底就是用于显示字符的操作系统没有在字符编码中找到对应的字符导致的,也并不是只要将NLS_LANG设置成数据库字符集就可以避免乱码的。


本文出自:亿恩科技【www.enkj.com】

服务器租用/服务器托管中国五强!虚拟主机域名注册顶级提供商!15年品质保障!--亿恩科技[ENKJ.COM]

  • 您可能在找
  • 亿恩北京公司:
  • 经营性ICP/ISP证:京B2-20150015
  • 亿恩郑州公司:
  • 经营性ICP/ISP/IDC证:豫B1.B2-20060070
  • 亿恩南昌公司:
  • 经营性ICP/ISP证:赣B2-20080012
  • 服务器/云主机 24小时售后服务电话:0371-60135900
  • 虚拟主机/智能建站 24小时售后服务电话:0371-60135900
  • 专注服务器托管17年
    扫扫关注-微信公众号
    0371-60135900
    Copyright© 1999-2019 ENKJ All Rights Reserved 亿恩科技 版权所有  地址:郑州市高新区翠竹街1号总部企业基地亿恩大厦  法律顾问:河南亚太人律师事务所郝建锋、杜慧月律师   京公网安备41019702002023号
      1
     
     
     
     

    0371-60135900
    7*24小时客服服务热线