nclob = rs->getClob(2);
nclob.open(OCCI_LOB_READONLY); /*注释这段可以,这是访问一台ORACLE编码使用的是UTF-8*/
//nclob.setCharSetForm(OCCI_SQLCS_IMPLICIT);
//nLobSize=nclob.length();
//nFileSize=3*nLobSize;//因为UTF-8一个字占3位
//nclob.setCharSetId("UTF8");
/*这段不可以,这是访问一台ORACLE编码使用的是GBK*/
nclob.setCharSetForm(OCCI_SQLCS_IMPLICIT);
nLobSize=nclob.length();
nFileSize=2*nLobSize;
nclob.setCharSetId("gbk");
bufp=new char[nFileSize];
nReadSize=nclob.read(nLobSize,(unsigned char*)bufp,nFileSize,1);
nclob.close();
if(nReadSize<=0)
{
printf("读取CLOB字段失败");
}
/*这两个函数据不知道是什么用,有什么区别*/
nclob.setCharSetForm();
nclob.setCharSetId();
nclob.open(OCCI_LOB_READONLY); /*注释这段可以,这是访问一台ORACLE编码使用的是UTF-8*/
//nclob.setCharSetForm(OCCI_SQLCS_IMPLICIT);
//nLobSize=nclob.length();
//nFileSize=3*nLobSize;//因为UTF-8一个字占3位
//nclob.setCharSetId("UTF8");
/*这段不可以,这是访问一台ORACLE编码使用的是GBK*/
nclob.setCharSetForm(OCCI_SQLCS_IMPLICIT);
nLobSize=nclob.length();
nFileSize=2*nLobSize;
nclob.setCharSetId("gbk");
bufp=new char[nFileSize];
nReadSize=nclob.read(nLobSize,(unsigned char*)bufp,nFileSize,1);
nclob.close();
if(nReadSize<=0)
{
printf("读取CLOB字段失败");
}
/*这两个函数据不知道是什么用,有什么区别*/
nclob.setCharSetForm();
nclob.setCharSetId();
2.setCharSetForm()设置字符集的形式, 参数是“Clob字符集的形式”,本例中表示设置为“本地数据库字符集”
3.setCharSetId() 设置CLOB字符集ID,都是设置字符集相关的,但是我也不太清楚这个ID到底是个什么东西。大概就类似于NAME是个部门名称 ,ID是这个部门所属的大分类的编号吧。对CLOB的操作,你可以参考一下这里:
http://download.oracle.com/docs/cd/B28359_01/appdev.111/b28393/adlob_lob_ops.htm#i1038288
http://download.oracle.com/docs/cd/B12037_01/appdev.101/b10778/reference007.htm#i1130838
Form我知道是啥?ID呢?
一个CharSetID可以包含多个不同的CharSetForm么?
也可以直接设置,setCharSetId() 设置CLOB字符集,也就是ZHS16GBK或UTF-8我试了这两种方式可行,但不理解其他字符集形式怎么用字符集的形式:http://download.oracle.com/docs/cd/B19306_01/appdev.102/b14294/reference002.htm