Dúvida ADO codepage

Forum sobre SQL.

Moderador: Moderadores

Avatar do usuário
JoséQuintas
Administrador
Administrador
Mensagens: 20267
Registrado em: 26 Fev 2007 11:59
Localização: São Paulo-SP

Dúvida ADO codepage

Mensagem por JoséQuintas »

Fiquei confuso agora com o que encontrei.
Procurando a codepage do ADO, encontrei que a codepage default é UNICODE.

https://msdn.microsoft.com/en-us/librar ... s.85).aspx

Mas que eu me lembre, nenhuma LIB de ADO para o Harbour trata isso.

Alguém poderia confirmar isso, se precisa setar codepage Windows-1252 na conexão, caso seja usada PTISO no Harbour.
José M. C. Quintas
Harbour 3.2, mingw, gtwvg mt, fivewin 25.04, multithread, dbfcdx, MySQL, ADOClass, PDFClass, SefazClass, (hwgui mt), (hmg3), (hmg extended), (oohg), PNotepad, ASP, stored procedure, stored function, Linux (Flagship/harbour 3.2)
"The world is full of kings and queens, who blind our eyes and steal our dreams Its Heaven and Hell"

https://github.com/JoseQuintas/
Avatar do usuário
JoséQuintas
Administrador
Administrador
Mensagens: 20267
Registrado em: 26 Fev 2007 11:59
Localização: São Paulo-SP

Dúvida ADO codepage

Mensagem por JoséQuintas »

Por enquanto identifiquei estas possibilidades de configuração:

No Harbour
Alterar o default pra PTISO

Na conexão ADO:
Alterar o default de unicode pra CharSet="Windows-1252"

Na string de conexão do MySql:
Não sei se apenas o ADO é suficiente, ou se precisa alterar a string de conexão: Collation=latin1

No MySql, o default é UTF8 a não ser que seja alterado:
latin1_swedish_ci

A questão não é apenas o Harbour ler/gravar informação, mas os dados aparecerem corretamente se acessados por outra linguagem de programação.

No VB6, por exemplo, o default é unicode, igual ao ADO.
José M. C. Quintas
Harbour 3.2, mingw, gtwvg mt, fivewin 25.04, multithread, dbfcdx, MySQL, ADOClass, PDFClass, SefazClass, (hwgui mt), (hmg3), (hmg extended), (oohg), PNotepad, ASP, stored procedure, stored function, Linux (Flagship/harbour 3.2)
"The world is full of kings and queens, who blind our eyes and steal our dreams Its Heaven and Hell"

https://github.com/JoseQuintas/
Avatar do usuário
JoséQuintas
Administrador
Administrador
Mensagens: 20267
Registrado em: 26 Fev 2007 11:59
Localização: São Paulo-SP

Dúvida ADO codepage

Mensagem por JoséQuintas »

Notas adicionais:

No MySql mais antigo, o default pra tudo era latin1 - no servidor

No MySql atual, o default pra tudo é UTF8

Justamente por essa diferença é que me perdi.
Como vi diferença na hora de backup/restore via Harbour, acredito que precise algo mais.

No backup/restore, o backup é pelo Harbour, mas o restore é pelo HeidiSql.
Chega a rejeitar linhas com caracteres acentuados, e o pior, talvez como já exista mistura no banco de dados, o próprio restore pelo HeidiSql de um backup feito por ele mesmo também acusa alguns erros.
José M. C. Quintas
Harbour 3.2, mingw, gtwvg mt, fivewin 25.04, multithread, dbfcdx, MySQL, ADOClass, PDFClass, SefazClass, (hwgui mt), (hmg3), (hmg extended), (oohg), PNotepad, ASP, stored procedure, stored function, Linux (Flagship/harbour 3.2)
"The world is full of kings and queens, who blind our eyes and steal our dreams Its Heaven and Hell"

https://github.com/JoseQuintas/
Avatar do usuário
JoséQuintas
Administrador
Administrador
Mensagens: 20267
Registrado em: 26 Fev 2007 11:59
Localização: São Paulo-SP

Dúvida ADO codepage

Mensagem por JoséQuintas »

Pra confundir ainda mais:

http://stackoverflow.com/questions/2588 ... s-of-mysql

O ODBC 3.51 trabalha somente com Ansi
ODBCs mais modernos tem versão em Ansi e Unicode.

Já não sei mais qual seria a configuração correta.
Nenhuma resposta nem aqui nem no harbour-users.

Deixei tudo como latin1 (default latin_swedish_ci) e odbc 3.51 que trabalha com Ansi.
Isso implica em alterar o default do MySql Server atual, e incompatibilidade com HeidiSql.
José M. C. Quintas
Harbour 3.2, mingw, gtwvg mt, fivewin 25.04, multithread, dbfcdx, MySQL, ADOClass, PDFClass, SefazClass, (hwgui mt), (hmg3), (hmg extended), (oohg), PNotepad, ASP, stored procedure, stored function, Linux (Flagship/harbour 3.2)
"The world is full of kings and queens, who blind our eyes and steal our dreams Its Heaven and Hell"

https://github.com/JoseQuintas/
alxsts
Colaborador
Colaborador
Mensagens: 3092
Registrado em: 12 Ago 2008 15:50
Localização: São Paulo-SP-Brasil

Dúvida ADO codepage

Mensagem por alxsts »

Olá!

Será que o MariaDB trata esta questão de alguma forma melhor que o MySQL?
[]´s
Alexandre Santos (AlxSts)
Avatar do usuário
JoséQuintas
Administrador
Administrador
Mensagens: 20267
Registrado em: 26 Fev 2007 11:59
Localização: São Paulo-SP

Dúvida ADO codepage

Mensagem por JoséQuintas »

É tudo igual, seja MySql ou Mariadb.
Só considerar que o Mariadb sempre foi binariamente compatível com MySql, e os mesmos odbcs pra MySql funcionam no Mariadb.
Mesmas configurações existem nos dois.

No Harbour escolhemos a codepage em uso.
Acho que isso já é suficiente pra causar variações.
E se existe diferença, isso deve acontecer com qualquer LIB pra acessar o MySql.

Considero que vários por aqui usam MySql, baseado nas discussões sobre qual biblioteca usar pra MySql.

No momento, aqui, a diferença é ao comparar a consulta feita pelo Harbour e pelo HeidiSql.

O importante não é apenas o Harbour funcionar, mas o conteúdo da base de dados ser compatível com o mundo externo.
José M. C. Quintas
Harbour 3.2, mingw, gtwvg mt, fivewin 25.04, multithread, dbfcdx, MySQL, ADOClass, PDFClass, SefazClass, (hwgui mt), (hmg3), (hmg extended), (oohg), PNotepad, ASP, stored procedure, stored function, Linux (Flagship/harbour 3.2)
"The world is full of kings and queens, who blind our eyes and steal our dreams Its Heaven and Hell"

https://github.com/JoseQuintas/
Responder