因为公司测试环境与生产环境中的oracle字符串并非用同一字符集,就造成了很多问题,特别是varchar类型的数据,在插入时,经常出现越界问题。比如某段为varchar(2),定义的长度为2,在GB2312编码下,可以存储一下汉字。而换成了UTF-8编码,则越界了。同时,我对varchar以及nvarchar不怎么了解,于是我查阅了一下oracle的官网。
官方文档中(Character Data Types)说明varchar2类型长度是以字节为单位的。GB2312编码长度为2,而UTF-8为可变长字符集,表示汉字时长度为3,另外nvarchar是以字符长度为单位的。经常用于亚州地区字符集。
参考:
Tables and Table Clusters