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  ("V S P" <toreason@fastmail.fm>)
Список 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 по дате отправления:

Предыдущее
От: "V S P"
Дата:
Сообщение: [Q] UTF-8 testing with Windows/ODBC 8.3.0400
Следующее
От: "V S P"
Дата:
Сообщение: Re: [Q] UTF-8 testing with Windows/ODBC 8.3.0400