为什么我的数据库(CentOS4.7+Oracle10gr2)的表里只能插入最多两个中文字符啊??表结构:
Name Null? Type
----------------------------------------- -------- ----------------------------
KK VARCHAR2(20)插入语句:
SQL> insert into testt values('哈哈哈');
ERROR:
ORA-01756: quoted string not properly terminated SQL> insert into testt values('哈哈');
1 row created.
插入3个中文字符失败,插入2个中文字符成功!!显示中文一点问题都没有,没有乱码问题!!
Name Null? Type
----------------------------------------- -------- ----------------------------
KK VARCHAR2(20)插入语句:
SQL> insert into testt values('哈哈哈');
ERROR:
ORA-01756: quoted string not properly terminated SQL> insert into testt values('哈哈');
1 row created.
插入3个中文字符失败,插入2个中文字符成功!!显示中文一点问题都没有,没有乱码问题!!
(被引用的字符没有合适的结束)
你的表结构有几个字段呀,我的用同样的方法,是可以把信息完整的写入数据库的。
最好把要插入的字段写上去。
(被引用的字符没有合适的结束)
你的表结构有几个字段呀,我的用同样的方法,是可以把信息完整的写入数据库的。
最好把要插入的字段写上去。
你把表重建一下看看?
drop table testt;
create table testt(kk varchar2(20 char));
再插入试试看?
另外,你的字符集是什么?看看
select userenv('language') from dual;
1、重建了一个表
2、
USERENV('LANGUAGE')
----------------------------------------------------
SIMPLIFIED CHINESE_CHINA.ZHS16GBK还有我在Oracle用户下看了一下环境变量,内容如下:
[oracle@GQ ~]$ env | grep LANG
NLS_LANG=SIMPLIFIED CHINESE_CHINA.ZHS16GBK
LANG=zh_CN.UTF-8难道是我的本机字符集有问题,我修改了一下本机的字符集密令如下:
[oracle@GQ ~]$ export LANG=zh_CN.UTF-16[oracle@GQ ~]$ env | grep LANG
NLS_LANG=SIMPLIFIED CHINESE_CHINA.ZHS16GBK
LANG=zh_CN.UTF-16然后我一次插入(胆战心惊..),结果是当插入偶数个'哈'时可以插入,当插入奇数数个'哈'时不可以插入,郁闷啊!!!!!
改成GBK呢?unix还是linux,不是很明白
我的意思是:是不是我的数据库字符集和客户端字符集不同造成的?
union all
select trim('哈哈哈'),dump('哈哈哈'),lengthb('哈哈哈') from dual;
我在“哈哈哈”后面加了一个空格就行了,然后我又继续瞎插 ,发现只要在“哈哈哈”后面不直接加单引号就可以插入。
悲剧啊!!!!!!!!!!!!!!!!! 我设的字符集应该没问题啊、、、、
where parameter='NLS_CHARACTERSET';
因为我安Oracle时选的是SIMPLIFIED CHINESE_CHINA.ZHS16GBK字符集,也就是GBK系列的字符集,
而我默认的字符集是UTF-8的所以会出现插入不进去。解决方法有两种
1、在中端输入: export LANG=GBK
2、在中端的菜单依此选择:终端->设置字符编码-》简体中文(GBK)再次感谢大家的帮助,主要是我手笨一直把LANG=zh_CN.GBK,其实crazylaa分析的一点也没有问题。