Nesse vídeo demonstraremos a utilização das funções DecodeUTF8 e EncodeUTF8 que servem para manipular uma string aplicando ou convertendo usando a codificação UTF-8.
Abaixo o código fonte desenvolvido para o exemplo em vídeo acima:
//Bibliotecas
#Include "TOTVS.ch"
/*/{Protheus.doc} User Function zExe138
Exemplo para transformar um texto com a codificação UTF-8
@type Function
@author Atilio
@since 16/12/2022
@see https://tdn.totvs.com/display/tec/DecodeUTF8 e https://tdn.totvs.com/display/tec/EncodeUTF8
@obs
Função DecodeUTF8
Parâmetros
+ cText , Caractere , String codificada em UTF-8 que será convertida
+ cEncoding , Caractere , Indica qual é o encoding do retorno
Retorno
+ cRet , Caractere , Retorna a string convertida
Função EncodeUTF8
Parâmetros
+ cText , Caractere , String que será convertida para UTF-8
+ cEnconding , Caractere , Indica qual é o enconding original (por padrão é o cp1252)
Retorno
+ cRet , Caractere , Retorna a string convertida em UTF-8
**** Apoie nosso projeto, se inscreva em https://www.youtube.com/TerminalDeInformacao ****
/*/
User Function zExe138()
Local aArea := FWGetArea()
Local cTexto := ""
Local cEncode := ""
Local cDecode := ""
Local cMensagem := ""
//Monta o texto e faz a conversão
cTexto := "A aranha arranha a rã. A rã arranha a aranha. Nem a aranha arranha a rã. Nem a rã arranha a aranha."
cEncode := EncodeUTF8(cTexto, "cp1252")
cDecode := DecodeUTF8(cEncode, "cp1252")
//Monta a mensagem que será exibida
cMensagem := "Texto Original: '" + cTexto + "'" + CRLF + CRLF
cMensagem += "CP1252 para UTF8: '" + cEncode + "'" + CRLF + CRLF
cMensagem += "UTF8 para CP1252: '" + cDecode + "'"
FWAlertInfo(cMensagem, "Exemplo EncodeUTF8 e DecodeUTF8")
FWRestArea(aArea)
Return
Bom pessoal, por hoje é só.
Abraços e até a próxima.
Esse portal é maravilhoso
Bom dia Amanda, tudo joia?
Opa, muito obrigado pelo comentário e feedback, é muita bondade sua.
Tenha uma ótima e abençoada quarta feira.
Um grande abraço.
Como faz para descobrir qual codificação está o texto?
Bom dia Douglas, tudo joia?
Via AdvPL / TLPP, não me lembro se tem alguma função que retorna o tipo de codificação de um texto, depois vou dar uma pesquisada sobre.
Agora se estiver por exemplo, lendo o conteúdo de um arquivo, você pode abrir esse arquivo pelo aplicativo Notepad++ e ver no canto inferior direito, que ele mostra a codificação do arquivo.
Tenha uma ótima e abençoada sexta feira.
Um grande abraço.
Atilio! buenas noches. realmente eres una fuente de información “muito grande”. Y si es posible, pedirte una ayuda.
Es posible leer desde un archivo en formato texto, caracteres asiáticos (por ejemplo chino) y grabarlo en un Excel ?
Mi duda es si cuando se hace la lectura del texto (que va a estar en chino), internamente ADVPL va a respetar el juego de caracteres o lo transformará ?
Desde ya muchas gracias.
Abrazo enorme desde Argentina!
Bom dia Alberto, tudo joia?
Primeiramente obrigado pelo feedback, é muita bondade e generosidade sua.
Quanto aos caracteres asiáticos, eu nunca precisei trabalhar com eles em AdvPL ou TLPP. Mas se via UTF8 for possível trabalhar com eles, então daria certo.
Você poderia testar a StrIConv, para converter a codificação pra UTF8, e ai trabalhar, segue link de exemplo: https://terminaldeinformacao.com/2024/06/05/convertendo-uma-string-de-uma-codificacao-para-outra-com-a-striconv-maratona-advpl-e-tl-458/
Tenha uma ótima e abençoada quarta feira.
Um forte abraço.