|
Prev: Problem with Unicode Strings
Next: Excel to Oracle
From: Andr� Hartmann on 15 Apr 2008 09:04 Hi, I am having trouble with stuffing in an getting out unicode strings into/from my database. I will briefly describe what I am doing, hoping that someone can point me to a mistake and end my weeks of trying... * Oracle 9i client and server, connecting via OCI from a C++ (MS Dev Studio 2005) application * Client OS: German Windows XP, SP2 * Server: Oracle9.2.0.1 Enterprise on Windows XP SP2, NLS_LANGUAGE=AMERICAN * Server character set (determined via "select value from nls_database_parameters where parameter='NLS_CHARACTERSET';"): WE8MSWIN1252 * Client character set GERMAN_GERMANY.WE8MSWIN1252 (determined via "sqlplus /nolog" and @.[%NLS_LANG%]) What I am doing in my program to stuff unicode in is this: std::wstring strUnicode(L"�b穾�??d��f??");//not correctly displayed here because this message is not unicode .... wchar_t* pValue = (pWS_ == NULL) ? NULL : _wcsdup( strUnicode.c_str() ); size_t nSize = (pValue == NULL) ? 0 : (sizeof(wchar_t) * (1 + wcslen(pValue))); .... swdReturnCode = OCIBindByPos ( (OCIStmt*) m_pOCIStatement, (OCIBind**) &pBindHandle, (OCIError*) m_pConnection->_getOCIError(), (ub4) columnIndex_, (dvoid*) pValue, (sb4) nSize, (ub2) SQLT_STR, (dvoid*) NULL, (ub2*) NULL, (ub2*) NULL, (ub4) NULL, (ub4*) NULL, (ub4) OCI_DEFAULT ); ub2 csid = OCI_UTF16ID; swdReturnCode = OCIAttrSet( (void *) pBindHandle , (ub4) OCI_HTYPE_BIND , (void *) &csid , (ub4) 0 , (ub4) OCI_ATTR_CHARSET_ID , m_pConnection->_getOCIError() ); .... The string that I am stuffing in corresponds to the following sequence of integers in my program's main memory: 194,98,231,169,190,252,1046,950,100,233,241,102,1715,1492 When I select I get the following back (displayed as "�b穾�d��f��"): 194,98,231,169,190,252,191,191,100,233,241,102,191,191 So it turns out that some characters have been transformed to be upsode-down question marks. I see the same thing when I dont fetch with my application but with the Oracle Enterprose Manager. What is wrong here? Am I missing out some important conversion on the way? Thanks in advance, Andr� :)
|
Pages: 1 Prev: Problem with Unicode Strings Next: Excel to Oracle |