C++ 将UNICODE从C/C+插入Oracle+;以DB为单位显示垃圾

C++ 将UNICODE从C/C+插入Oracle+;以DB为单位显示垃圾,c++,oracle,unicode,oracle-pro-c,C++,Oracle,Unicode,Oracle Pro C,我有下面的示例程序 int main(void) { char insertQuery[] = "INSERT INTO ABCD_TABLE VALUES('987','31-AUG-16','19-JAN-17','901', '31-DEC-12','1',\'\',\'\',\'\',\'\',\'\',\'\',\'ÜÜcreate02_de,ää\')"; connectToSQLServer(); executeINSERTQuery(insertQuery

我有下面的示例程序

int main(void)
{
    char insertQuery[] = "INSERT INTO ABCD_TABLE VALUES('987','31-AUG-16','19-JAN-17','901',
'31-DEC-12','1',\'\',\'\',\'\',\'\',\'\',\'\',\'ÜÜcreate02_de,ää\')";
    connectToSQLServer();
    executeINSERTQuery(insertQuery);
    return 0;
}
当我运行程序时,查询成功地插入到数据库中,但
ÜÜ
显示为垃圾

当我在
Toad
中手动运行相同的查询时,它被正确插入,
ÜÜ
Toda
中正确显示

"INSERT INTO ABCD_TABLE VALUES('987','31-AUG-16','19-JAN-17','901','31-DEC-12','1','','','','','','','ÜÜcreate02_de,ää')";
可能是什么问题?
如果你们需要
connectToSQLServer()
executeINSERTQuery(insertQuery)
的代码示例,请务必告诉我。我将提供。

您已将NLS_LANG变量设置为ALL32UTF8。还有一种方法可以在OCI级别执行,请参见:OCIEnvNlsCreate和

通过这样做,您可以告诉OCI驱动程序,存储在缓冲区中的所有内容都是UTF8字符集,从数据库中提取的所有内容也必须是UTF8字符集

注意,一些OCIAPI函数确实区分字节数和字符数。例如,您不能使用OCILobRead/OCILobWrite来操作CLOB。必须使用扩展版本OCILobRead2/OCILobWrite2