Problemas con la codificación de caracteres

Buenos días.
Estoy teniendo dificultades con la codificación de caracteres en una instalación nueva de G3 (versión 3.21.2). Todos los mensajes que envía el sistema salen mal codificados (por ej. el mensaje para restablecer contraseña).
Como supongo que es un problema de locales, instalé dos servidores diferentes para hacer pruebas (uno con la BD en UTF-8 y el otro con la BD en ISO-8859-1). En ambos casos tengo el mismo problema.
Si hago una consulta en desarrollo.apex_msg los datos están correctos.
Si cambio la codificación de caracteres en el archivo bases.ini de LATIN1 a UTF-8 soluciono el problema de los mensajes pero el problema de codificación se traslada a la interfase.
Anteriormente había instalado una versión 3.20 para hacer pruebas en un servidor que corría Slackware64 y no recuerdo haber tenido estos problemas. Actualmente estoy corriendo Debian 11 (por ser la distribución en la que está basada la documentación de instalación).
Necesito ayuda con esto por favor.

Saludos cordiales.

Hola @pgimperiale

¿que Collation y Character type tenes en la DB? En mi caso es en_US.UTF-8:

SELECT datname, datcollate, datctype
FROM pg_database 
WHERE datname = current_database();

¿tenes bien configuradas las directivas default_charset y mbstring.internal_encoding en “ISO-8859-1” en el php.ini? Revisa los Requisitos previos para la instalación en Linux – Distribuciones Debian o derivados

saludos.
[size=1pt]2[/size]

Hola Leonel.
Ante todo gracias por tu respuesta.
Como comenté antes tengo dos instalaciones.
En una de ellas la codificación es es_AR.UTF-8 y en la otra es_AR.iso88591 (o sea LATIN1 según pide el instructivo).
Las directivas en ambos casos en los archivos php.ini (/etc/php/7.4/cli y /etc/php/7.4/apache2) están correctas. También probé de usar UTF8 (para evacuar dudas y -obviamente- el problema persiste).



Te adjunto capturas de la definición de las bases de datos en ambos servidores.

Saludos cordiales.

Leonel, como dato adicional acabo de regenerar el clúster de postgres con la codificación en_US.UTF-8 y seguimos igual.

Hola @pgimperiale

¿esto te ocurre en los emails o en toda la aplicación?
¿desde Gestión o Autogestión?

Revisa este otro tema Error caracteres con tilde

Si lo hiciste desde Gestión operación Recuperar contraseña el CharSet de PHPMailer se setea en UTF-8.

¿que te devuelve la siguiente query? ¿se ve bien el mensaje?

SELECT	COALESCE(apex_msg.mensaje_customizable, apex_msg.mensaje_a) as mensaje, msg_tipo as tipo
FROM 	desarrollo.apex_msg
WHERE	UPPER(trim(apex_msg.indice)) = UPPER('800_email_recuperar_contrasenia_cuerpo')
AND 	apex_msg.proyecto = 'guarani';

En instalacion/bases.ini es encoding = “LATIN1” , en Autogestión no lo solemos configurar en instalacion/config.php.

En el Toba Editor tenes el logo de PHP a la derecha, si le haces click carga el phpinfo, revisa que las directivas estén bien.

saludos.
[size=1pt]2[/size]

Buenos días Leonel.
Todas las configuraciones están revisadas tal cual el instructivo (varias veces de hecho).
PHPMailer nunca se tocó. Tal como comenté en el primer post, si cambio la codificación de la base toba en el archivo bases.ini el problema de los mails se resuelve inmediatamente… entiendo que si fuera un problema de PHPMailer la falla persistiría en cualquier caso.
Sigo sin saber qué tocar.

Del mismo modo, tal como aclaré en el primer post, la codificación de los caracteres de la table apex_msg es correcta. Para estar seguro de ello inserté un registro nuevo en esa tabla y, cuando se envía el mail, el mensaje se presenta mal codificado. Cuando hago la consulta por fuera de sistema los datos se presentan bien.

Hola @pgimperiale

Te dejo otros temas que quizás te sirvan:

¿reiniciaste Apache luego de hacer los cambios en el php.ini?

Temporalmente agregar las siguientes lineas en el archivo www/aplicacion.php y luego pasame lo que muestra:

<?php

phpinfo();
exit();

saludos.
2

Leonel, los 4 hilos que me pasaste refieren al mismo problema. No es mi caso. Como te comenté, la codificación en el servidor está correcta,
Podés ver la info de PHP completa (incluídos los módulos) en http://g3testing.ucel.edu.ar
En http://g3testing.edu.ar/guarani/3.21 está apuntado el directorio raíz de Guaraní.

Hola @pgimperiale , te paso unas cosas que observo diferente de mi phpinfo:

  1. default_charset del Core, tenes iso-8859-1, yo lo tengo todo en mayúsculas ISO-8859-1.

  2. mbstring.internal_encoding pasa lo mismo, proba si eso afecta.

  3. date.timezone no lo tenes seteado, debería ser America/Argentina/Buenos_Aires.

Revisa que dice Se sugiere inicializar el cluster y crear la base de datos con encoding UTF8, ejecuta la siguiente query:

select datname, pg_encoding_to_char(encoding) from pg_database

¿te devuelve UTF8?

Referencia: How can I query the encoding of a postgresql cluster? - Server Fault

saludos.
[size=1pt]2[/size]

Leonel, las minúsculas en la codificación no inciden (anteriormente estaban en mayúsculas y las cambié a minúsculas para descartar que no fuera ese el problema). La codificación del clúster es correcta (fijate en el segundo post que te pasé las capturas de ambos servidores que tengo corriendo con seteos diferentes, uno en LATIN1 y el otro en UTF-8).
El tema del timezone que no estaba configurado en el php.ini del cliente ya está corregido.
Sigue igual.

Hola @pgimperiale , gracias por la información!!!

Pregunta, ¿esto te pasa solo al enviar emails o en todas las operaciones?
¿solo te pasa en Gestión, o también te pasa en Autogestión y Preinscripción?

En la función configurar_smtp de php/nucleo/_lib/mensajes/mail_job_nucleo.php proba cambiar $mail->CharSet = static::CHARSET_UTF_8; por $mail->CharSet = ‘ISO-8859-1’;, seria acá. Igualmente con UTF-8 debería funcionar bien con los acentos del español.

saludos.
[size=1pt]2[/size]

Buen día Leonel.
¡¡¡Exito total!!!
Efectivamente cambiando el charset a ISO-8859-1 en la función hizo el truco.
Lo que no entiendo es por qué si el charset de la clase está definido en UTF-8 no lo hereda de forma correcta.
Espero no tener problemas a futuro con este tema.
El servidor es de gestión. Todavía no instalé autogestión.

Gracias.
Saludos.