Codificación UTF-8, ANSI y caracteres especiales
Identifica codificación de bytes antes de convertir texto.
Descripción general
ANSI no identifica página de código universal. Identificar bytes origen y destino: EncodeUTF8 convierte página conocida a UTF-8; DecodeUTF8 convierte a página indicada, con cp1252 predeterminado. Repetir conversión puede corromper texto. EncodeUTF8 puede devolver Nil por bytes inválidos. Ejemplo construye byte cp1252 de é con Chr(233), sin depender de codificación del fuente, y comprueba ida y vuelta; no supone que todo Unicode quepa en cp1252. (TOTVS, s.f., refs. 1–2)
Ejemplo comentado
#Include "Protheus.ch"
User Function Ed304()
Local cOrigen := Chr(233)
Local cUtf8 := EncodeUTF8(cOrigen, "cp1252")
// Comprobar tipo antes de usar conversion.
If ValType(cUtf8) == "C"
ConOut(cValToChar(DecodeUTF8(cUtf8, "cp1252") == cOrigen))
EndIf
Return NilSe espera igualdad verdadera para byte válido; investigar ausencia de salida como fallo de conversión. En revisión: ejemplo editorial no compilado ni ejecutado en Protheus. Comprobar includes, release, RDD y contexto antes de probar.
- Separar codificación de fuente, transporte y almacenamiento. No reparar acentos con sustituciones arbitrarias ni ocultar datos inválidos suprimiendo errores.
- En revisión: ejemplo editorial no compilado ni ejecutado en Protheus. Comprobar includes, release, RDD y contexto antes de probar.

Comentarios
Todavía no hay comentarios aprobados.
Inicia sesión con Google o Microsoft para comentar.