2017-01-20 10 views
0

에 쓰레기를 보여줍니다 ...삽입 유니 코드는 C에서/C++ 내가 아래 샘플 프로그램이 DB

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; 
} 

쿼리는 DB에 성공적으로 삽입되지만 ÜÜ이 표시됩니다 쓰레기로.

Toad에서 동일한 쿼리를 수동으로 실행하면이 값이 proprly로 삽입되고 ÜÜToda에 올바르게 표시됩니다.

"INSERT INTO ABCD_TABLE VALUES('987','31-AUG-16','19-JAN-17','901','31-DEC-12','1','','','','','','','ÜÜcreate02_de,ää')"; 

어떤 문제 일 수 있습니까? connectToSQLServer()executeINSERTQuery(insertQuery)의 코드 샘플이 필요한 경우 알려 주시기 바랍니다. 나는 제공 할 것이다.

답변

0

NLS_LANG 변수를 ALL32UTF8로 설정했습니다. 또한 OCI 레벨에서 수행하는 방법이 있습니다. OCIEnvNlsCreate 및 Database Globalization Support Guide을 참조하십시오.

OCI 드라이버에게 버퍼에 저장하는 모든 것이 UTF8 charset으로되어 있고 데이터베이스에서 철회 된 모든 것이 UTF8이어야한다는 것을 알게 될 때까지 말입니다.

추 신 : 일부 OCI API 함수는 바이트 수와 문자 수를 구별합니다. 예를 들어 OCILobRead/OCILobWrite를 사용하여 CLOBS를 조작하면 안됩니다. 확장 버전 OCILobRead2/OCILobWrite2를 사용해야합니다.

+0

링크가 작동하지 않습니다 ... – NJMR