Clipper On Line • Ver Tópico - UTF / Unicode / CHR / ASC - Dicas acentuação
Mudar para estilo Clássico
Projeto MiniGui - Biblioteca visual para Harbour/xHarbour
Postar uma resposta

UTF / Unicode / CHR / ASC - Dicas acentuação

26 Nov 2018 17:16

HMG 3.4.4
----------------
Estou meio enrolado aqui com essa combinação em HMG, falta de conhecimento mesmo.

Estou desenvolvendo uma classe para encriptar um texto e usando como técnica converter os caracteres do texto para o seu valor ASC (a esse valor, por exemplo somo + 1 ) e converto novamente para carácter CHR, e salvo esse texto, tudo ok com a parte lógica mas quando o texto tem acentuação o resultado ao desencriptar não é o esperado.

Tenho quase certeza que a combinação HMG + Harbour está me colocando nessa situação, mais por desconhecimento mesmo.

Código:
   //fase I
   For nI := 1 to cTamanhoTexto 

      cCar := SUBS(cTextoFechado, nI, 1)
      cCar := CHR(ASC(cCar) - Val( subs(::cChave, nDente, 1 ) ) )
      
      cTemp := cTemp + cCar
      
      nDente++
      IF ( nDente > cTamanhoChave )
         nDente := 1
      ENDIF 
      
      
   Next nI


Já tentei algumas configurações de páginas.

Código:
#include <hmg.ch>
#include "hbclass.ch"

REQUEST HB_LANG_PT
REQUEST HB_CODEPAGE_UTF8

Function Main

   hb_langSelect( "pt" )

        Load Window Main
        Main.Center
        Main.Activate

Return



Sem_Erro.png
Sem acentuar OK
Sem_Erro.png (6.13 KiB) Visualizado 1308 vezes


Erro-Acento.png
Usando acentos erro !
Erro-Acento.png (6.77 KiB) Visualizado 1308 vezes

UTF / Unicode / CHR / ASC - Dicas acentuação

26 Nov 2018 19:30

Opa ...

Aparentemente está resolvido, vamos aos testes...

Código:
   REQUEST HB_LANG_PT
   REQUEST HB_CODEPAGE_PT850     
   HB_SetCodePage( "PT850" )                 
   HB_LANGSELECT("PT")



Só uma dúvida ... o REQUEST em alguns exemplos está fora do MAIN, em que isso influência ?

Agora_Sem_Erro.png
Vamos aos testes práticos
Agora_Sem_Erro.png (7.58 KiB) Visualizado 1296 vezes

UTF / Unicode / CHR / ASC - Dicas acentuação

01 Jul 2020 19:34

HB_SetCodePage( "PT850" )
Cambia la codepage para Ansi portugués.
Por defecto HMG trabaja en unicode, para esto hay que usar:
Hb_ucode ()
Hb_uchar ()
En vez de asc/chr que funcionan sólo con paginas de código Ansi
Postar uma resposta