From: Ingmar K. [ NETIKUS.N. l. ] <ing...@ne...> - 2009-07-24 14:29:32
|
Hello, I am having problems getting unicode data from a OS X machine into a SQL database (MySQL and MSSQL). I have spent days on this now, and I'm pretty much at a loss. I was hoping that somebody could point me in the right direction or point to some sample code. I need to write a cross-platform application that is capable of writing UTF-8 or UTF-16 data from Windows, Linux or OS X into an ODBC database (e.g. MySQL, MSSQL). My test project works on Windows (with Microsoft ODBC) as well as on Linux (with unixODBC), but it's just not working on OS X with iODBC. I don't have the version in front of me now, but I believe the OS X version I am using has iODBC v3.52.4 installed. I am reading a UTF-8 encoded test file (just two lines of text in Japanese), and then just add a row to a unicode enabled database. However, it doesn't work. I tried BindParameter(), inline with a SQL statement, to MySQL UTF-8, MySQL UTF-16 and MSSQL UCS-2. At this point I'm not sure if the ODBC drivers are the problem, or if iODBC is the issue. When trying to use SQLExecDirectW() with a wchar_t string, a network capture shows that the wchar_t is being garbled by adding 0x00 between the characters. For example, a 0xA430 in the INSERT statement is changed to 0xA4003000 (or 0x00A40030, can't remember right now). To target a MSSQL database from OS X, I have also converted the UTF-8 string to UTF-16 and then used SQLExecDirectW() - without success. Just using SQLExecDirect() also doesn't work (it does on Linux). I can definitely point test code here if that would be helpful. Thanks! Best regards, Ingmar Koecher. ------------------------------ Managing more than 10 servers? Check out the new AutoAdministrator v2.0 - the ONLY tool to instantly view or change Windows settings on multiple hosts without scripting! ------------------------------------------------------------------------ --------- _________________________________ NETIKUS.NET ltd http://www.netikus.net http://www.eventsentry.com email: ing...@ne... phone: 1-877-NETIKUS x47699 fax: 1-877-485 3975 150 N. Michigan Avenue, Ste 2800 Chicago, IL 60601 |
From: Hugh W. <hwi...@op...> - 2009-07-25 19:54:03
|
Hi Ingmar, What ODBC drivers are you using to perform these inserts, the OpenLink ODBC Driver for MySQL and MSSQL or other third party ODBC drivers for Mac OS X ? Can you provide an iODBC Driver Manager trace of the insertion attempts against both databases ? The tracing can be enabled as detailed at: http://www.iodbc.org/index.php?page=docs/faq#iodbc234151489 Have you tried performing the inserts with the iodbctestw unicode sample program provided with iODBC ? Best Regards Hugh Williams Professional Services OpenLink Software Web: http://www.openlinksw.com Support: http://support.openlinksw.com Forums: http://boards.openlinksw.com/support On 24 Jul 2009, at 15:07, Ingmar Koecher [ NETIKUS.NET ltd ] wrote: > Hello, > > I am having problems getting unicode data from a OS X machine into > a SQL > database (MySQL and MSSQL). I have spent days on this now, and I'm > pretty much at a loss. I was hoping that somebody could point me in > the > right direction or point to some sample code. > > I need to write a cross-platform application that is capable of > writing > UTF-8 or UTF-16 data from Windows, Linux or OS X into an ODBC database > (e.g. MySQL, MSSQL). > > My test project works on Windows (with Microsoft ODBC) as well as on > Linux (with unixODBC), but it's just not working on OS X with iODBC. I > don't have the version in front of me now, but I believe the OS X > version I am using has iODBC v3.52.4 installed. > > I am reading a UTF-8 encoded test file (just two lines of text in > Japanese), and then just add a row to a unicode enabled database. > However, it doesn't work. I tried BindParameter(), inline with a SQL > statement, to MySQL UTF-8, MySQL UTF-16 and MSSQL UCS-2. > > At this point I'm not sure if the ODBC drivers are the problem, or if > iODBC is the issue. When trying to use SQLExecDirectW() with a wchar_t > string, a network capture shows that the wchar_t is being garbled by > adding 0x00 between the characters. For example, a 0xA430 in the > INSERT > statement is changed to 0xA4003000 (or 0x00A40030, can't remember > right > now). > > To target a MSSQL database from OS X, I have also converted the UTF-8 > string to UTF-16 and then used SQLExecDirectW() - without success. > Just > using SQLExecDirect() also doesn't work (it does on Linux). > > I can definitely point test code here if that would be helpful. > > > Thanks! > > > Best regards, > > Ingmar Koecher. > > ------------------------------ > Managing more than 10 servers? > Check out the new AutoAdministrator v2.0 - the ONLY tool > to instantly view or change Windows settings on multiple hosts without > scripting! > ---------------------------------------------------------------------- > -- > --------- > _________________________________ > NETIKUS.NET ltd > http://www.netikus.net > http://www.eventsentry.com > > email: ing...@ne... > phone: 1-877-NETIKUS x47699 > fax: 1-877-485 3975 > > 150 N. Michigan Avenue, Ste 2800 > Chicago, IL 60601 > > > ---------------------------------------------------------------------- > -------- > _______________________________________________ > Iodbc-macosx mailing list > Iod...@li... > https://lists.sourceforge.net/lists/listinfo/iodbc-macosx |