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

Projeto MiniGui - Biblioteca visual para Harbour/xHarbour

Moderador: Moderadores

Avatar do usuário
susviela@bol.com.br
Usuário Nível 3
Usuário Nível 3
Mensagens: 236
Registrado em: 30 Jun 2017 11:17
Localização: São José / SC
Contato:

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

Mensagem 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 1739 vezes
Usando acentos erro !
Usando acentos erro !
Erro-Acento.png (6.77 KiB) Exibido 1739 vezes
.
.
"E quando você perder o controle, colherá o que plantou."
=========================================
Carlos Alberto Nunes #Susviela
Site: https://www.PowerInformatica.com.br
=========================================
Blog xBase: https://programandoxbase.wordpress.com/
Blog TI: https://susviela.wordpress.com

( #ProgramandoxBase #AllxBase )
Avatar do usuário
susviela@bol.com.br
Usuário Nível 3
Usuário Nível 3
Mensagens: 236
Registrado em: 30 Jun 2017 11:17
Localização: São José / SC
Contato:

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

Mensagem 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 1727 vezes
.
.
"E quando você perder o controle, colherá o que plantou."
=========================================
Carlos Alberto Nunes #Susviela
Site: https://www.PowerInformatica.com.br
=========================================
Blog xBase: https://programandoxbase.wordpress.com/
Blog TI: https://susviela.wordpress.com

( #ProgramandoxBase #AllxBase )
Claudio Soto
Colaborador
Colaborador
Mensagens: 566
Registrado em: 27 Ago 2012 12:31
Localização: Uruguay
Contato:

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

Mensagem 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
Saludos.
Dr. Claudio Soto
(Uruguay)
http://srvet.blogspot.com
Responder