powered by simpleCommunicator - 2.0.55     © 2025 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Visual Basic [игнор отключен] [закрыт для гостей] / adodb odbc кирилица - получаю знаки вопроса
11 сообщений из 11, страница 1 из 1
adodb odbc кирилица - получаю знаки вопроса
    #37074073
psn_usr
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
При подключении из vb6 через obdc драйвер к базе transbase, получаю знаки вопроса вместо кирилицы.
С кодировками в системе все в порядке. База в utf-8.
Пробовал делать через vba и vb.net, тоже самое.

Примечательно, что если подключаться через access, куда через тот же самый odbc драйвер прилинкованы таблицы(все один в один с vb6), то все корректно отображается.

Пытался прописывать кодировку в строке подключения - не помогло.
Использовал adodb.stream для перекодировки - без результата.

Проблема возникла после переустановки winXP и самой базы transbase с 2010 на 2011.
До этого год работал, все было в порядке.

Уже не знаю куда копать дальше, работать то через access не удобно.
...
Рейтинг: 0 / 0
adodb odbc кирилица - получаю знаки вопроса
    #37074090
Дмитрий77
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
psn_usr,

>Проблема возникла после переустановки winXP
>получаю знаки вопроса вместо кирилицы

попробуй Настройка->Панель Управления->Языки и региональные Стандарты
Дополнительно->Выберете язык используемый языку используемых программ, которые не поддерживают Юникод =Русский
Ну там применить, OK, перегрузить... чего винды потребуют.
Это довольно злобное место в системе, раньше я из за этого не понимая переустанавливал.
...
Рейтинг: 0 / 0
adodb odbc кирилица - получаю знаки вопроса
    #37074099
psn_usr
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
спасибо, но не помогает.
Несколько раз даже пробовал.
...
Рейтинг: 0 / 0
adodb odbc кирилица - получаю знаки вопроса
    #37074111
psn_usr,
> Пытался прописывать кодировку в строке подключения - не помогло.

какую именно пытался прописывать? Если utf-8, - то зря. Пробуй Windows-1251 (или как она у драйвера transbase называется).
...
Рейтинг: 0 / 0
adodb odbc кирилица - получаю знаки вопроса
    #37074124
psn_usr
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
пробуй камнем, какую именно пытался прописывать? Если utf-8, - то зря. Пробуй Windows-1251 (или как она у драйвера transbase называется).

Вообще я не уверен, что этот драйвер поддерживает установку кодировки (в мануале какого не нашел), но пробовал и utf8, utf16, windows-1251. Не помогло.

Access то без указаний кодировки все без проблем тянет.
...
Рейтинг: 0 / 0
adodb odbc кирилица - получаю знаки вопроса
    #37074267
Фотография michael R
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
попробуй вот такой код использовать
когда использовал для разных языков в одной базе
используется только UTF-8 (может нужно поиграться с константами)
остальные константы для совместимости

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
49.
50.
51.
52.
53.
54.
55.
56.
57.
58.
59.
60.
61.
62.
63.
64.
65.
66.
67.
68.
69.
70.
71.
72.
73.
74.
75.
76.
77.
78.
79.
80.
81.
82.
83.
84.
85.
86.
87.
88.
89.
90.
91.
92.
93.
94.
95.
96.
97.
98.
99.
100.
101.
102.
103.
104.
105.
106.
107.
108.
109.
110.
111.
112.
113.
114.
115.
116.
117.
118.
119.
120.
121.
122.
123.
124.
125.
126.
127.
128.
129.
130.
131.
132.
133.
134.
135.
136.
137.
138.
139.
140.
141.
142.
143.
144.
145.
146.
Private Declare Function MultiByteToWideChar Lib "kernel32" _
(ByVal CodePage As Long, ByVal dwFlags As Long, _
ByVal lpMultiByteStr As String, ByVal cchMultiByte As Long, _
ByVal lpWideCharStr As Long, ByVal cchWideChar As Long) As Long

CP_UNKNOWN = - 1 
CP_ACP =  0 
CP_OEMCP =  1 
CP_MACCP =  2 
CP_THREAD_ACP =  3 
CP_SYMBOL =  42 
' ARABIC
CP_AWIN =  101  ' Bidi Windows codepage
CP_709 =  102  ' MS-DOS Arabic Support CP 709
CP_720 =  103  ' MS-DOS Arabic Support CP 720
CP_A708 =  104  ' ASMO 708
CP_A449 =  105  ' ASMO 449+
CP_TARB =  106  ' MS Transparent Arabic
CP_NAE =  107  ' Nafitha Enhanced Arabic Char Set
CP_V4 =  108  ' Nafitha v 4.0
CP_MA2 =  109  ' Mussaed Al Arabi (MA/2) CP 786
CP_I864 =  110  ' IBM Arabic Supplement CP 864
CP_A437 =  111  ' Ansi 437 codepage
CP_AMAC =  112  ' Macintosh Code Page
' HEBREW
CP_HWIN =  201  ' Bidi Windows codepage
CP_862I =  202  ' IBM Hebrew Supplement CP 862
CP_7BIT =  203  ' IBM Hebrew Supplement CP 862 Folded
CP_ISO =  204  ' ISO Hebrew 8859-8 Character Set
CP_H437 =  205  ' Ansi 437 codepage
CP_HMAC =  206  ' Macintosh Code Page
' CODE PAGES
CP_OEM_437 =  437 
CP_ARABICDOS =  708 
CP_DOS720 =  720 
CP_DOS737 =  737 
CP_DOS775 =  775 
CP_IBM850 =  850 
CP_IBM852 =  852 
CP_DOS861 =  861 
CP_DOS862 =  862 
CP_IBM866 =  866 
CP_DOS869 =  869 
CP_THAI =  874 
CP_EBCDIC =  875 
CP_JAPAN =  932 
CP_CHINA =  936 
CP_KOREA =  949 
CP_TAIWAN =  950 
' UNICODE
CP_UNICODELITTLE =  1200 
CP_UNICODEBIG =  1201 
' CODE PAGES
CP_EASTEUROPE =  1250 
CP_RUSSIAN =  1251 
CP_WESTEUROPE =  1252 
CP_GREEK =  1253 
CP_TURKISH =  1254 
CP_HEBREW =  1255 
CP_ARABIC =  1256 
CP_BALTIC =  1257 
CP_VIETNAMESE =  1258 
' KOREAN
CP_JOHAB =  1361 
' MAC
CP_MAC_ROMAN =  10000 
CP_MAC_JAPAN =  10001 
CP_MAC_ARABIC =  10004 
CP_MAC_GREEK =  10006 
CP_MAC_CYRILLIC =  10007 
CP_MAC_LATIN2 =  10029 
CP_MAC_TURKISH =  10081 
' CODE PAGES
CP_CHINESECNS =  20000 
CP_CHINESEETEN =  20002 
CP_IA5WEST =  20105 
CP_IA5GERMAN =  20106 
CP_IA5SWEDISH =  20107 
CP_IA5NORWEGIAN =  20108 
CP_ASCII =  20127 
CP_RUSSIANKOI8R =  20866 
CP_RUSSIANKOI8U =  21866 
CP_ISOLATIN1 =  28591 
CP_ISOEASTEUROPE =  28592 
CP_ISOTURKISH =  28593 
CP_ISOBALTIC =  28594 
CP_ISORUSSIAN =  28595 
CP_ISOARABIC =  28596 
CP_ISOGREEK =  28597 
CP_ISOHEBREW =  28598 
CP_ISOTURKISH2 =  28599 
CP_ISOLATIN9 =  28605 
CP_HEBREWLOG =  38598 
CP_USER =  50000 
CP_AUTOALL =  50001 
CP_JAPANNHK =  50220 
CP_JAPANESC =  50221 
CP_JAPANISO =  50222 
CP_KOREAISO =  50225 
CP_TAIWANISO =  50227 
CP_CHINAISO =  50229 
CP_AUTOJAPAN =  50932 
CP_AUTOCHINA =  50936 
CP_AUTOKOREA =  50949 
CP_AUTOTAIWAN =  50950 
CP_AUTORUSSIAN =  51251 
CP_AUTOGREEK =  51253 
CP_AUTOARABIC =  51256 
CP_JAPANEUC =  51932 
CP_CHINAEUC =  51936 
CP_KOREAEUC =  51949 
CP_TAIWANEUC =  51950 
CP_CHINAHZ =  52936 
CP_GB18030 =  54936 

' UNICODE
CP_UTF7 =  65000 
CP_UTF8 =  65001 

Public Function UtfToWin(ByVal cnvUni As String) As String

Dim sOut As String, sIn As String, OutLength As Long
Dim i&, Char As Byte, CharPercent As Byte
Dim s As String

sIn = cnvUni
sOut = cnvUni
OutLength =  0 

CharPercent = Asc("%")

For i =  1  To Len(sIn)
    Char = Asc(Mid$(sIn, i,  1 ))
    If Char = CharPercent Then
        Char = CByte("&H" & Mid$(sIn, i +  1 ,  2 ))
        i = i +  2 
    End If
    OutLength = OutLength +  1 
    Mid$(sOut, OutLength,  1 ) = Chr$(Char)
Next i

sOut = Left$(sOut, OutLength)
s = sOut
s = Replace(Left$(s, MultiByteToWideChar(CP_UTF8,  0 , sOut, - 1 , StrPtr(s), LenB(s))), Chr( 0 ), "")
UtfToWin = s
End Function
...
Рейтинг: 0 / 0
adodb odbc кирилица - получаю знаки вопроса
    #37074323
psn_usr
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
michael Rпопробуй вот такой код использовать
когда использовал для разных языков в одной базе
используется только UTF-8 (может нужно поиграться с константами)
остальные константы для совместимости

Не помогает.
Вместо ???????? выдает ? ? ? ? ? ? ? ?

rs1.Fields(0) уже возвращает знаки вопроса, их бесполезно конвентировать.

Видимо с ODBC драйвером не все в порядке. Но работало же раньше... попробую старую версию найти.
...
Рейтинг: 0 / 0
adodb odbc кирилица - получаю знаки вопроса
    #37074407
White Owl
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
psn_usrrs1.Fields(0) уже возвращает знаки вопроса, их бесполезно конвентировать.Откуда ты это знаешь? Потому что пытался печатать? Это не показатель. Прогони текст посимвольно через ascw() и убедись что там действительно вся строка состоит из символов с кодом вопросительного знака. Если там действительно только вопросы - тогда и ковыряйся с драйверами БД.
Но 9/10 у тебя поле вывода не умеет принимать уникодные символы.
...
Рейтинг: 0 / 0
adodb odbc кирилица - получаю знаки вопроса
    #37074570
Фотография michael R
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
посмотри что у тебя действительно только знаки вопроса
возьми textbox из Form2(это поддержка уникода)
и присвой тексту значение из рекордсета

попробуй ещё поиграться с функцией StrConv
только там при работе заменяй все chr(0) на "" иначе все не распечатается весь текст

я только даю варианты решения
поскольку саму базу не вижу
...
Рейтинг: 0 / 0
adodb odbc кирилица - получаю знаки вопроса
    #37074822
Фотография Игорь Горбонос
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
> Автор: psn_usr


А база - она чья изначально? В смысле это база акцеса, MSSQL, dbf-файл и т.д

Posted via ActualForum NNTP Server 1.4
...
Рейтинг: 0 / 0
adodb odbc кирилица - получаю знаки вопроса
    #37075195
psn_usr
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Всем спасибо за ответы.
ASCW() возвращает строку
Код: plaintext
 636363636363636347636363636363 

textbox из froms2 показывает ???

изначальная база - transbase, подробнее на этой ветке

Огромная база в мощной оболочке и комплекте с odbc драйвером, через которой можно с ней работать.

Если я прилинковываю таблицы из этой базы к access 2000, подключаюсь в модуле через ADO, делаю SQL запрос и как подключение указываю CurrentProject.Connection, то русские буквы оттображаются. Пока так и работаю.

Но если в том же модуле делаю такой же запрос, с подключением напрямую через драйвер, то получаю знаки вопроса.

Значит драйвер работает.
...
Рейтинг: 0 / 0
11 сообщений из 11, страница 1 из 1
Форумы / Visual Basic [игнор отключен] [закрыт для гостей] / adodb odbc кирилица - получаю знаки вопроса
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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