problemas com acentuação

Projeto [x]Harbour - Compilador de código aberto compatível com o Clipper.

Moderador: Moderadores

cjp
Usuário Nível 6
Usuário Nível 6
Mensagens: 1563
Registrado em: 19 Nov 2010 22:29
Localização: paraná
Contato:

problemas com acentuação

Mensagem por cjp »

Colegas,
Faz alguns dias venho enfrentando problema com acentuação no meu programa. Não lembro de ter mudado nada nisso. Mas talvez o problema tenha começado a partir de quando comecei a usar MySQL. Será que tem a ver?
Estou iniciando o programa assim:

Código: Selecionar todos

#include "inkey.ch"
#include "hbgtinfo.ch"
#include "dbinfo.ch"
#define RDDI_CONNECT     1001
#define RDDI_DISCONNECT   1002
#define RDDI_EXECUTE     1003
REQUEST SQLMIX, SDDODBC, DBFNTX
ANNOUNCE RDDSYS
REQUEST HB_LANG_PT
REQUEST HB_CODEPAGE_PT850

function main()
         RDDSETDEFAULT("DBFNTX")
         HB_SETCODEPAGE('PT850')
         HB_LANGSELECT('PT')
...

Compilo com Harbour e estou usando máquina com Windows 7.

O mais estranho é que o erro está ocorrendo apenas na minha máquina, não em outras que rodam o mesmo programa.
Inacio de Carvalho Neto
Avatar do usuário
JoséQuintas
Administrador
Administrador
Mensagens: 20267
Registrado em: 26 Fev 2007 11:59
Localização: São Paulo-SP

problemas com acentuação

Mensagem por JoséQuintas »

Não tenho certeza, mas acho que PT850 é Portugal e não Brasil.
Também precisa ver a página que usou no MySql.
Uso PTISO, e no MySql é a default, se não me engano Latin1.
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
mhackervix
Usuário Nível 3
Usuário Nível 3
Mensagens: 105
Registrado em: 11 Fev 2008 02:06
Localização: ES

problemas com acentuação

Mensagem por mhackervix »

José,

Uso para desenvolvimento o Xailer (Harbour 3.2) que possui duas opções de Compilador C (o MinGW e o BCC). Recentemete recompilei um Sistema Grande com a opção de MimGW ( a 4 anos ele vem sendo Compilado com BCC) e passei a ter problema nas rotinas que fazem tratamento do acentos (unica mudança foi a troca de compilador !?!). verificamos (e colocamos no forum publico do Xailer) que tem difereça de logica entre o MinGW e o BCC quando comparam conteudo de variaveis caracteres, em especial com acentuação.

Voce teria, tambem, mudado de compilador C ????

att.
Mhackervix, Msc.
cjp
Usuário Nível 6
Usuário Nível 6
Mensagens: 1563
Registrado em: 19 Nov 2010 22:29
Localização: paraná
Contato:

problemas com acentuação

Mensagem por cjp »

Não tenho certeza, mas acho que PT850 é Portugal e não Brasil.
Também precisa ver a página que usou no MySql.
Uso PTISO, e no MySql é a default, se não me engano Latin1.
José, desculpe, mas não entendi bem o que vc disse.

Como assim "a página que usou no MySql"? Estou usando MySql via RDD. Estou ainda engatinhando nisso.

Tentei substituir HB_SETCODEPAGE('PT850') por HB_SETCODEPAGE('PTISO'), mas deu erro.

Também tentei substituir HB_LANGSELECT('PT') por HB_LANGSELECT('PTISO'), mas também deu erro.

A verdade é que eu não entendo nada disso. Preciso de ajuda.
Inacio de Carvalho Neto
Avatar do usuário
JoséQuintas
Administrador
Administrador
Mensagens: 20267
Registrado em: 26 Fev 2007 11:59
Localização: São Paulo-SP

problemas com acentuação

Mensagem por JoséQuintas »

Tudo que envolve o programa tem que estar na mesma codepage.
Talvez até dependa do tipo de acesso usado para conectar ao MySQl.

Aqui uso ADO pra conectar ao MySql, e PTBR é a página equivalente ao Windows PTBR.
O MySql uso no default latin1

Pelo que entendi, isto configura tudo de uma vez pra mesma codepage, é o que passei a usar:

Código: Selecionar todos

REQUEST  HB_Codepage_PTISO

PROCEDURE Main
   Set( _SET_CODEPAGE, "PTISO" )
"

Ainda mantenho a digitação limitada a não aceitar acentuação, mas deixei de ter problemas com acentuação em XMLs e MySql.
Diria que ficou igual quando eu usava no Visual Basic.
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/
cjp
Usuário Nível 6
Usuário Nível 6
Mensagens: 1563
Registrado em: 19 Nov 2010 22:29
Localização: paraná
Contato:

problemas com acentuação

Mensagem por cjp »

Com essa configuração que vc sugeriu, virou uma zona danada aqui. Tá cheio de caracteres estranhos.

Veja:

Imagem
Inacio de Carvalho Neto
Avatar do usuário
Jairo Maia
Moderador
Moderador
Mensagens: 2785
Registrado em: 16 Ago 2010 13:46
Localização: Campinas-SP

problemas com acentuação

Mensagem por Jairo Maia »

Olá Inácio,

Coloque depois da linha:

Código: Selecionar todos

Set( _SET_CODEPAGE, "PTISO" )
O seguinte comando e veja se funciona:

Código: Selecionar todos

Hb_GtInfo( HB_GTI_COMPATBUFFER, .F. )
Abraços, Jairo
Harbour / Clipper 5.2e - Blinker 7
(Não respondo dúvidas por MP ou E-mail. Por favor, não encaminhe via mensagem privada ou e-mail, dúvidas que podem ser compartilhadas com todos no fórum)
Avatar do usuário
JoséQuintas
Administrador
Administrador
Mensagens: 20267
Registrado em: 26 Fev 2007 11:59
Localização: São Paulo-SP

problemas com acentuação

Mensagem por JoséQuintas »

Isso confunde muito mesmo.
Se usar codepage PTBR, o seu FONTE também precisa usar PTBR.
Não adianta colocar no fonte chr(205) que não vai sair na tela o desenho parecido com "=".
Se costuma usar isso no fonte, a primeira coisa é a tela se desconfigurar totalmente.
Ao adotar PTBR, esqueça editor DOS ou editor configurado pra caracteres DOS.
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/
cjp
Usuário Nível 6
Usuário Nível 6
Mensagens: 1563
Registrado em: 19 Nov 2010 22:29
Localização: paraná
Contato:

problemas com acentuação

Mensagem por cjp »

Resolveu os caracteres estranhos, mas não a acentuação.
Inacio de Carvalho Neto
Avatar do usuário
JoséQuintas
Administrador
Administrador
Mensagens: 20267
Registrado em: 26 Fev 2007 11:59
Localização: São Paulo-SP

problemas com acentuação

Mensagem por JoséQuintas »

Acrescentando pra lembrar....
Se já usa acentuação no sistema, tem coisas cadastradas nas bases de dados com acentuação.
Ao alterar a codepage, esses cadastros também vão ficar bagunçados.

Como falei, é simples e complicado.
A partir do momento que tudo estiver pra mesma codepage ok.
Vai ter que ir acertando o que havia sido cadastrado na codepage anterior, e também os fontes na codepage anterior, e telas e mensagens, e tudo mais.
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
Jairo Maia
Moderador
Moderador
Mensagens: 2785
Registrado em: 16 Ago 2010 13:46
Localização: Campinas-SP

problemas com acentuação

Mensagem por Jairo Maia »

Olá Inácio,

Apenas acrescentando dentro do que o José já disse, o problema é que suas mensagens com certeza estão em OEM, e usando a codificação PTISO precisa ser ANSI para funcionar tudo corretamente. O editor Notepad++ tem um recurso que ajuda nessa compatibilização. Você terá que compatibilizar.
Abraços, Jairo
Harbour / Clipper 5.2e - Blinker 7
(Não respondo dúvidas por MP ou E-mail. Por favor, não encaminhe via mensagem privada ou e-mail, dúvidas que podem ser compartilhadas com todos no fórum)
Avatar do usuário
JoséQuintas
Administrador
Administrador
Mensagens: 20267
Registrado em: 26 Fev 2007 11:59
Localização: São Paulo-SP

problemas com acentuação

Mensagem por JoséQuintas »

De repente vém a pergunta: porque isso não acontece no Visual Basic?
Ao editar o fonte pela IDE, o codepage está no padrão Windows.
O visual de tela está no padrão Windows, e as conexões com base de dados ADO já estão no padrão Windows.
E a parte de impressão... também padrão Windows.

No Harbour...
o fonte default é na codepage US - ainda é a mesma default no DOS do Windows
A tela default é na codepage US se for janela DOS, ou PTBR se for janela Windows
O banco de dados... pelo Harbour é codepage US, mas se conectar pelo Windows é codepage PTBR
Então a maioria do default Harbour é US.

Como nunca usei acentuação, apenas no Visual Basic, optei por usar a mudança de tudo usando o comando que mencionei.
Tive que mudar fontes pra não usar mais Chr() em alguns caracteres especiais.
Teve uns tbrowse que não consegui resolver, onde montava a separação de coluna com chr(179).

Ainda não uso acentuação na base de dados, mas acredito que já poderia usar normalmente.
Pra evitar problemas de compatibilidade, e como o pessoal tá acostumado assim não mexi.

Mas o que eu uso então com acentuação?
O site harbourdoc.com.br está totalmente em base MySql, e faço edição via programa.
Tanto na tela, na base de dados, e até mesmo na tela HTML está tudo ok, sinal de que o padrão PTBR atendeu a tudo.
E como já disse antes, também a parte de SPED.

Um teste rápido: abra seu fonte no EDIT do DOS, e depois no bloco de notas do Windows, e veja se continua igual.
A codepage PTBR vai ser igual a do bloco de notas, portanto se o fonte/caractere fica visível no bloco de notas, a tela também vai ficar.
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

problemas com acentuação

Mensagem por JoséQuintas »

Ah sim, um outro teste simples, mostrar a tela ASCII:
tabelaascii.png
Esses são os caracteres disponíveis.

Então, na hora de resolver um problema de acentuação, precisa entender o tipo do problema.
Mostrar errado na tela pode ser o caractere original errado no arquivo ou no fonte, não apenas a codepage da tela.
Repare que os caracteres de box não existem mais (179, 186, 205, etc)
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