powered by simpleCommunicator - 2.0.58     © 2025 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / C++ [игнор отключен] [закрыт для гостей] / Как прочитать Unicode строку правильно?
12 сообщений из 12, страница 1 из 1
Как прочитать Unicode строку правильно?
    #39802574
Ролг Хупин
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Использую
SQLGetPrivateProfileString, чтобы прочитать параметры DSN из odbcinst.ini (Registry).

Например, имя юзера UID='König'

char temp[4096];
SQLGetPrivateProfileString(DSN, INI_USERNAME, "", temp, sizeof(temp), ODBC_INI)

прочитано 'K?nig'

Что не так с SQLGetPrivateProfileString?

зы. Это кусок драйвера PostgreSQL odbc 11.
...
Рейтинг: 0 / 0
Как прочитать Unicode строку правильно?
    #39802690
Dima T
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
char это один байт, т.е. ANSI кодировка. Соответственно SQLGetPrivateProfileString() читает в ANSI.

Для юникода надо два байта, т.е. wchar_t. Возможно есть SQLGetPrivateProfileStringW()? которая будет с ним работать.
...
Рейтинг: 0 / 0
Как прочитать Unicode строку правильно?
    #39802698
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ролг Хупин,
В конфиге драйвера потавь кодировку.
...
Рейтинг: 0 / 0
Как прочитать Unicode строку правильно?
    #39802714
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dima TВозможно есть SQLGetPrivateProfileStringW()? которая будет с ним работать.

Нету. Когда MS писало эту часть спеков ODBC (версия 2.0), они ещё не задумывались над
юникодом.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Как прочитать Unicode строку правильно?
    #39802726
Ролг Хупин
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Petro123Ролг Хупин,
В конфиге драйвера потавь кодировку.

где именно?
...
Рейтинг: 0 / 0
Как прочитать Unicode строку правильно?
    #39802728
Ролг Хупин
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dima Tchar это один байт, т.е. ANSI кодировка. Соответственно SQLGetPrivateProfileString() читает в ANSI.

Для юникода надо два байта, т.е. wchar_t. Возможно есть SQLGetPrivateProfileStringW()? которая будет с ним работать.

вызвал эту для эксперимента, читает в тот же char temp[4096] какую-то фигню
первых 5 байтов нули, потом какой-то символ, потом снова куча нулей
...
Рейтинг: 0 / 0
Как прочитать Unicode строку правильно?
    #39802732
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ролг ХупинPetro123Ролг Хупин,
В конфиге драйвера потавь кодировку.

где именно?
Мне в конфиге сервера помогло
lc_messages = 'Russian_Russia.UTF8'
иначе на net клиенте крякозяблы были.
...
Рейтинг: 0 / 0
Как прочитать Unicode строку правильно?
    #39802741
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dimitry SibiryakovНету.

Был неправ, они таки заморочились.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Как прочитать Unicode строку правильно?
    #39802750
Ролг Хупин
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Petro123Ролг Хупинпропущено...


где именно?
Мне в конфиге сервера помогло
lc_messages = 'Russian_Russia.UTF8'
иначе на net клиенте крякозяблы были.

ну, это мэсиджи, а параметры DSN х.е.з
...
Рейтинг: 0 / 0
Как прочитать Unicode строку правильно?
    #39802776
Ролг Хупин
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Здесь
https://git.postgresql.org/gitweb/?p=psqlodbc.git;a=blob;f=dlg_specific.c;h=309b9bcd546c95aeecf1fa1084a942f0117ddbee;hb=HEAD

Скажем, строка 600, вызов работает в случае, если собран драйвер и как ANSI, и как UNICODE.
Код тот же, при наличии константы имена функций переопределены в odbcinst.h типа

Код: plaintext
1.
#define  SQLGetPrivateProfileString     SQLGetPrivateProfileStringW



но почему-то у меня специфические символы не читаются
...
Рейтинг: 0 / 0
Как прочитать Unicode строку правильно?
    #39803027
blonduser
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ролг ХупинЗдесь
... если собран драйвер и как ANSI, и как UNICODE.
но почему-то у меня специфические символы не читаются

Файл конфигурации хранится в ANSI и никак не зависит от того в какой кодировке собран драйвер.
Хочешь получить в UNICODE конвертни строку из ANSI в UNICODE.
...
Рейтинг: 0 / 0
Как прочитать Unicode строку правильно?
    #39803070
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
blonduserФайл конфигурации хранится в ANSI и никак не зависит от того в какой кодировке собран драйвер.

Конфигурация ODBC уже давно хранится не в файле, а в реестре и там фиксированный юникод,
который перекодируется в ANSI при чтении не-юникодными функциями.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
12 сообщений из 12, страница 1 из 1
Форумы / C++ [игнор отключен] [закрыт для гостей] / Как прочитать Unicode строку правильно?
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]