oracle英文字符集问题
select substr('2007年11月28日10:00中华人民共和国中华人民共和国',20,20) from dual;显示是'中华人民共和国中华人',
但select substr('2007年11月28日10:00中华人民共和国中华人民共和国',21,20)却是乱码,
原因分析:主要由于英文字符集中,中文被识别为二个半解字符组成,
我如何很好判断是该从什么位置开始取值才不显示乱码。也就是substr(string,????,20)才不显示乱码。

解决方案 »

  1.   

    楼主差矣,是你的数据库字符集设定有问题吧?oracle10g 字符集:utf-8,客户端:sql plus 操作系统:windowsselect   substr('2007年11月28日10:00中华人民共和国中华人民共和国',20,20)   from   dual;民共和国中华人民共和国select   substr('2007年11月28日10:00中华人民共和国中华人民共和国',21,20)   from   dual;共和国中华人民共和国
      

  2.   

    楼主在有中文的情况下不应该设置字符集为英文的,应该设置为utf-8或者gbk(oracle中文安装的时候默认的字符集zh-cn就是gbk的一个子集)。在这种情况下中文字符长度和字母字符长度是一样的,都是1。
    设置为zhcn对你的其他地方有影响么?
      

  3.   

    原因是不能设置为其它字符集,因为有多个oracle数据库之间存在数据调用,而其它的oracle数据库也是英文字符集,所以不能变更字符集。