Página 1 de 1

problemas com acentuação

Enviado: 24 Jun 2014 00:14
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.

problemas com acentuação

Enviado: 24 Jun 2014 02:27
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.

problemas com acentuação

Enviado: 27 Jun 2014 00:06
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.

problemas com acentuação

Enviado: 27 Jun 2014 00:24
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.

problemas com acentuação

Enviado: 27 Jun 2014 11:04
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.

problemas com acentuação

Enviado: 27 Jun 2014 12:00
por cjp
Com essa configuração que vc sugeriu, virou uma zona danada aqui. Tá cheio de caracteres estranhos.

Veja:

Imagem

problemas com acentuação

Enviado: 27 Jun 2014 12:08
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. )

problemas com acentuação

Enviado: 27 Jun 2014 12:21
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.

problemas com acentuação

Enviado: 27 Jun 2014 12:22
por cjp
Resolveu os caracteres estranhos, mas não a acentuação.

problemas com acentuação

Enviado: 27 Jun 2014 12:27
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.

problemas com acentuação

Enviado: 27 Jun 2014 12:38
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.

problemas com acentuação

Enviado: 27 Jun 2014 12:59
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.

problemas com acentuação

Enviado: 27 Jun 2014 14:37
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)