collect unicode values using C++ code and ODBC calls: Following is my code: SQL database contains both ascii and unicode values in the name field. I am not able to collect unicode values. Can anybody please help. Code: #define _UNICODE #include <windows.h> #include <stdio.h> #include <string.h> #include <stdlib.h> #include <sql.h> #include <sqlext.h> #include <sqlucode.h> #include <odbcss.h> #include<iostream.h> void main() { SQLHENV hEnv=NULL; SQLHDBC hDBC=NULL; SQLRETURN retcode; /* Convert the strings... */ //WCHAR wszDSN[] = L"myDataSource"; WCHAR wszDSN[] = L"myDataSource"; WCHAR wszUID[] = L"sa"; WCHAR wszPWD[] = L"bmcAdm1n"; WCHAR wszSqlState[SQL_SQLSTATE_SIZEW] = L""; WCHAR wszMsg[200] = L""; SQLHSTMT hStmt = NULL;// Statement handle WCHAR szSqlStr[150]= L"select name ,default_database_name,default_language_name from sys.sql_logins" ; cout<<"hEnv before SQLAllocEnv = "<<hEnv<<endl; retcode= SQLAllocEnv (&hEnv); cout<<"retcode= "<<retcode<<endl; cout<<"hEnv after SQLAllocEnv = "<<hEnv<<endl; cout<<"\n***********************\n\n"; // Allocate memory for the connection handle cout<<"hDBC before SQLAllocConnect = "<<hDBC<<endl; retcode= SQLAllocConnect (hEnv, &hDBC); cout<<"retcode= "<<retcode<<endl; cout<<"hDBC after SQLAllocConnect = "<<hDBC<<endl; cout<<"\n***********************\n\n"; retcode = SQLConnect (hDBC, wszDSN, SQL_NTS,wszUID, SQL_NTS, wszPWD, SQL_NTS); cout<<"retcode= "<<retcode<<endl; if (retcode == SQL_SUCCESS || retcode == SQL_SUCCESS_WITH_INFO) { printf("\n------------Connected---------------\n"); // Allocate memory for the statement handle cout<<"hStmt before SQLAllocStmt = "<<hStmt<<endl; retcode = SQLAllocStmt (hDBC, &hStmt); cout<<"retcode= "<<retcode<<endl; cout<<"hStmt after SQLAllocStmt = "<<hStmt<<endl; cout<<"\n***********************\n\n"; retcode = SQLExecDirect(hStmt,szSqlStr, SQL_NTS); WCHAR name[10],defDBnm[10],defLanguage[10]; SDWORD retcode2, cbname, cbdefDBnm, cbdefLanguage; retcode2=NULL; if (retcode2 == SQL_SUCCESS) { retcode2 = SQLBindCol(hStmt, 1, SQL_C_CHAR, name, 10, &cbname); retcode2 = SQLBindCol(hStmt, 2, SQL_C_CHAR, defDBnm, 10, &cbdefDBnm); retcode2 = SQLBindCol(hStmt, 3, SQL_C_CHAR, defLanguage, 10, &cbdefLanguage); } cout <<"\n****************************************\n"; while (TRUE) { retcode2 = SQLFetch(hStmt); if (retcode2 == SQL_SUCCESS || retcode2 == SQL_SUCCESS_WITH_INFO) { if (cbname == SQL_NULL_DATA) /* check null data */ printf("\nname: NULL\n"); else { printf("\n1Name: %s", name); char strBuffer[20]; memset (strBuffer, 0,sizeof(strBuffer)); WideCharToMultiByte(CP_UTF8, 0, name,-1, strBuffer, 20, NULL, NULL); printf("\nBuffer: %s\n", strBuffer); } if (cbdefDBnm == SQL_NULL_DATA) printf("defDBnm name: NULL\n"); else printf("defDBnm name: %s\n", defDBnm); if (cbdefLanguage == SQL_NULL_DATA) printf("defLanguage: NULL\n"); else printf("defLanguage : %s\n\n", defLanguage); } else /* if no more data or errors returned */ break; } // Free the allocated statement handle SQLFreeStmt (hStmt, SQL_DROP); // Disconnect from datasource SQLDisconnect (hDBC); } // Free the allocated connection handle SQLFreeConnect (hDBC); // Free the allocated ODBC environment handle SQLFreeEnv (hEnv); }