Página 1 de 1

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

Enviado: 26 Nov 2018 18:16
por susviela@bol.com.br
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: Selecionar todos

	//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: Selecionar todos

#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 acentuar OK
Sem acentuar OK
Sem_Erro.png (6.13 KiB) Exibido 1737 vezes
Usando acentos erro !
Usando acentos erro !
Erro-Acento.png (6.77 KiB) Exibido 1737 vezes

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

Enviado: 26 Nov 2018 20:30
por susviela@bol.com.br
Opa ...

Aparentemente está resolvido, vamos aos testes...

Código: Selecionar todos

	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 ?
Vamos aos testes práticos
Vamos aos testes práticos
Agora_Sem_Erro.png (7.58 KiB) Exibido 1725 vezes

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

Enviado: 01 Jul 2020 19:34
por Claudio Soto
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