我的项目编码是utf-8,数据库安装时设置的编码是utf-8
我想请问一下以下这些类型在Oracle中的存储问题
char nchar varchar varchar2 nvarchar2
我上网查找了很多资料,都说n字头的类型使用unicode存储的,而别的类型使用本地编码(中文是BGK)存的,因为我在安装的时候设置utf-8,所以我的Oracle本地编码就是utf-8.我又查找了utf-8和unicode的区别,发现unicode是按照标准的2个字节存储的,而utf-8是1到3个字节不等。
在java中的String在内存中的编码是按照unicode存的,只有在getBytes方法才会涉及到编码问题(所以我的项目utf-8编码和String没什么关系)。这样,理论上,我在编程的时候,用n字头的,像nchar nvarchar2存储的话因为都unicode可以得到中文,而用char,varchar,varchar2存储的话就应该是乱码但是,我在测试的时候,部分代码如下:
db.executeSql("insert into test(l1,l2,l4,l5,l8) values (" +
"'abcde中文中文'," +//char
"'abcde中文中文'," +//varchar
"'abcde中文中文'," +//varchar2
"'abcde中文中文'," +//nchar
"'abcde中文中文')");//nvarchar2

ResultSet rs = db.select("select * from test");
while(rs.next()){
System.out.println(rs.getString(1));
System.out.println(rs.getString(2));
System.out.println(rs.getString(3));
System.out.println(rs.getString(4));
System.out.println(rs.getString(5));
}
db.close();
控制台打印的结果是所有的都可以正常显示中文!我想问问,我上面的理解对吗?
如果对,为什么都可以正常显示中文呢?
如果不对,求指教,求详细。