Page tree
Skip to end of metadata
Go to start of metadata

Converte uma string de origem de um encoding (code-page) conhecido para a codificação UTF-8 ( 8-bit Unicode Transformation Format ).

Sintaxe

EncodeUtf8( < cText >, < cEncoding > )

Parâmetros

Nome

Tipo

Descrição

Obrigatório

Referência

cText

caractere

Indica a string (buffer) que será convertida para o formato UTF-8.

X


cEncodingcaractereIndica qual o encoding (code-page) do buffer original passado em cText. O valor padrão para o parâmetro é "cp1252".

Retorno

Nome

Tipo

Descrição

cRet

caractere

Retorna a string no formato UTF-8.

Observações

  • Os valores possíveis para o parâmetro encoding são aqueles utilizados pela biblioteca iconv. Pode-se visualizar o conjunto de valores a partir do executável binário gerado pela biblioteca iconv pelo comando: iconv -l. Alguns dos valores possíveis são "cp1252", "cp1251", "iso8859-1".

  • Existem determinados códigos na tabela ASCII que não fazem parte da tabela CP1252, segue abaixo :
    ASCII 129
    ASCII 141
    ASCII 143
    ASCII 144
    ASCII 157

  • Caso a função EncodeUTF8() seja chamada onde o parâmetro contém qualquer um destes caracteres para conversão, será registrado no log de console do TOTVSAppServer a mensagem "*** Warning - Invalid conversion from cp1252 to utf-8", e a função retornará NIL ( Nulo ), pois nenhum destes códigos ASCII faz parte da tabela de codificação CP1252. Em sistemas legados do Microsoft DOS, que utilizavam a codificação CP437 e/ou CP850, estes códigos representavam as letras "ü", "ì","Å","É" e "¥", respectivamente.

  • A tabela de codificação CP1252 contempla a representação gráfica dos caracteres da lista acima, porém usando um outros códigos ASCII : A letra ü ( u minísculo com trema ) é representada pelo código ASCII 252, ì ( i minúsculo com crase ) é representado por ASCII 236, Å ( A maiúsculo com anel ) é representado por ASCII 197, É ( E maiúsculo com acento agudo ) é representado por ASCII 201, e o simbolo Yen é representado por ASCII 165.

  • Estes caracteres podem ser encontrados em tabelas de dados, onde os dados são provedientes de sistemas legados, ou importados de arquivos texto ASCII, que representam os dados utilizando uma página de código do DOS ( CP437 e/ou CP850 ).

Exemplos

Exemplo 1
#define CRLF Chr(13) + Chr(10)

User Function Exemplo()

  Local cTexto := ""
  Local cEncodeUTF8 := ""
  Local cDecodeUTF8 := ""
  Local cMensagem := ""
  
  cTexto := "à noite, vovô kowalsky vê o ímã cair no pé do pingüim "
  cTexto += "queixoso e vovó põe açúcar no chá de tâmaras do jabuti feliz."
  cEncodeUTF8 := EncodeUTF8(cTexto, "cp1252")
  cDecodeUTF8 := DecodeUTF8(cEncodeUTF8, "cp1252")
  cMensagem := "Pangrama origem: [" + cTexto + "]"
  cMensagem += CRLF + "Texto -> UTF8: [" + cEncodeUTF8 + "]"
  cMensagem += CRLF + "UTF8 -> Texto: [" + cDecodeUTF8 + "]"
  MsgInfo(cMensagem, "Exemplo")
  
  // Brasil em Russo
  cTexto := chr(193)+chr(240)+chr(224)+chr(231)+chr(232)+chr(235)+chr(201)+chr(235)+chr(255)
  cEncodeUTF8 := EncodeUTF8(cTexto, "cp1251") 
  cDecodeUTF8 := DecodeUTF8(cEncodeUTF8, "cp1251")
  cMensagem := "Pangrama origem: [" + cTexto + "]"
  cMensagem += CRLF + "Texto -> UTF8: [" + cEncodeUTF8 + "]"
  cMensagem += CRLF + "UTF8 -> Texto: [" + cDecodeUTF8 + "]"
  MsgInfo(cMensagem, "Exemplo")

Return

Abrangência

Microsiga Protheus 8.11 , Protheus 10, Protheus 11

Veja também

  • No labels