Re: [Q] UTF-8 testing with Windows/ODBC 8.3.0400
От | Craig Ringer |
---|---|
Тема | Re: [Q] UTF-8 testing with Windows/ODBC 8.3.0400 |
Дата | |
Msg-id | 49C098DE.1010807@postnewspapers.com.au обсуждение исходный текст |
Ответ на | [Q] UTF-8 testing with Windows/ODBC 8.3.0400 ("V S P" <toreason@fastmail.fm>) |
Ответы |
Re: [Q] UTF-8 testing with Windows/ODBC 8.3.0400
|
Список | pgsql-odbc |
V S P wrote: > My C++ program relies on OTL C++ library to do DB access, and in the > Visual Studio debugger I see only question marks '?' for the strings. How would Visual Studio know that the std::string instances in question contain UTF-8 data? std::string is a byte string, not a character string - it could contain text in any encoding (or non-text data) and VC++ has no way of knowing how to interpret it. What it probably does is display anything within the ASCII range, and otherwise display ?s . If you expect to be able to work with those strings as real text, you probably want to use std::wstring instead, and USE APPROPRIATE ENCODING CONVERSION ROUTINES. Note that the width of wchar_t varies from platform to platform, so you'll need to convert to/from UTF-16 for a 2 byte wchar_t, or to/from UTF-32 for a 4-byte wchar_t. (I hate working with unicode and encodings in standard C++ *SO* much - argh! One of the only areas where I really wish I was using Java. If only the QString class from Qt was part of standard C++ ... ). > I am using std::string to store the bytestream from varchar column an I > think it is ok > because I do not need to 'manipulate' the content. True - but VC++ won't be able to understand what's in it, either. > I cannot figure out what else I might be doing wrong.... as I said, all > I need for now it is just to test out that a C++ program via ODBC can > get the data. Your description really isn't adequate to say. It's highly likely that you're retrieving the data from the database fine, but your tools don't know it's UTF-8 and aren't able to work with it correctly. That's mostly a guess with the amount of information you've provided, though. Perhaps you could post a small, self-contained test program and a SQL script to populate a test database? Then post the results of running the program against the database, including the hex values of the bytes returned by the ODBC interface. -- Craig Ringer
В списке pgsql-odbc по дате отправления: