Codificação UTF-8, ANSI e caracteres especiais
Identifica a codificação dos bytes antes de converter texto.
Visão geral
ANSI não designa uma única página de código. Identifique a origem dos bytes e o destino: EncodeUTF8 converte de uma página conhecida para UTF-8; DecodeUTF8 faz o caminho para a página informada, com cp1252 como padrão documentado. Converter novamente um texto já convertido pode corrompê-lo. EncodeUTF8 pode devolver Nil para bytes inválidos na página declarada. O exemplo monta o byte cp1252 de é com Chr(233), evitando depender da codificação do arquivo-fonte, e confere a ida e volta; não pressupõe que todo caractere Unicode caiba em cp1252. (TOTVS, s.d., refs. 1–2)
Exemplo comentado
#Include "Protheus.ch"
User Function Ed304()
Local cOrigem := Chr(233)
Local cUtf8 := EncodeUTF8(cOrigem, "cp1252")
// Confere tipo antes de usar a conversao.
If ValType(cUtf8) == "C"
ConOut(cValToChar(DecodeUTF8(cUtf8, "cp1252") == cOrigem))
EndIf
Return NilEspera-se igualdade verdadeira para esse byte válido; a ausência de saída deve ser investigada como falha de conversão. Em revisão: exemplo editorial não compilado nem executado em Protheus. Conferir includes, release, RDD e contexto antes de homologar.
- Separar codificação do fonte, do transporte e do armazenamento. Não corrigir acentos por substituições ad hoc nem desativar erros de conversão para ocultar dados inválidos.
- Em revisão: exemplo editorial não compilado nem executado em Protheus. Conferir includes, release, RDD e contexto antes de homologar.

Comentários
Ainda não há comentários aprovados.
Entre com Google ou Microsoft para comentar.