Generar archivo para becas progresar v.3.22.0

Buenos días,
actualizamos a la versión 3.22.0 para usar la nueva funcionalidad de Becas.

El inconveniente que tenemos es que el archivo descargado becas.zip contiene los archivos txt en codificación ANSI; pero la plataforma Progresar acepta en UTF-8.

Les comento más abajo las configuraciones que hemos cambiado, e igualmente nos sigue descargando en ANSI. ¿nos ayudan qué más podemos cambiar? Gracias

Saludos, Milva.-

Pasos realizados para tratar de solucionar el problema de codificación a UTF-8

  1. PostgreSQL:

    • Ejecuté el comando SHOW SERVER_ENCODING; para verificar la codificación del servidor. El resultado fue:
      /l
      toba_3_3 | postgres | UTF8 | es_AR.UTF-8 | es_AR.UTF-8 |
    • Esto confirma que la base de datos está configurada con la codificación UTF8.
  2. Configuración de Apache:

  • Modifiqué el archivo apache2.conf para agregar la siguiente línea:
    AddDefaultCharset UTF-8
  • Esto asegura que Apache maneje UTF-8 como la codificación predeterminada.
  1. Configuración del sistema Debian:
  • Verifiqué la configuración regional del sistema con el comando locale, y los resultados fueron:
    LANG=es_AR.UTF-8
    LANGUAGE=es_AR:es
    LC_CTYPE=“es_AR.UTF-8”
    LC_NUMERIC=“es_AR.UTF-8”
    LC_TIME=“es_AR.UTF-8”
    LC_COLLATE=“es_AR.UTF-8”
    LC_MONETARY=“es_AR.UTF-8”
    LC_MESSAGES=“es_AR.UTF-8”
    LC_PAPER=“es_AR.UTF-8”
    LC_NAME=“es_AR.UTF-8”
    LC_ADDRESS=“es_AR.UTF-8”
    LC_TELEPHONE=“es_AR.UTF-8”
    LC_MEASUREMENT=“es_AR.UTF-8”
    LC_IDENTIFICATION=“es_AR.UTF-8”
    LC_ALL=
  1. Configuración de PHP:
    • Modifiqué el archivo php.ini para agregar y modificar las siguientes directivas:
      default_charset = “utf-8”
      mbstring.internal_encoding = “UTF-8”
      mbstring.http_output = “UTF-8”
      mbstring.encoding_translation = On
      mbstring.func_overload = 6

Hola Milva,
mirá en ese foro ahí se comenta como podes editar el formato del archivo a UTF8.
Saludos.

Gracias Stella! si, es lo que hicimos para informar a la Plataforma Progresar.

Lo que planteo es la posibilidad que se pueda resolver directamente desde Guaraní.
Y poder conceder/derivar esta nueva funcionalidad a los usuarios finales.

Saludos, Milva.-

podrían personalizar hasta que en el SIU lo corrijan?

editen este php:
personalizacion\php\nucleo\administracion\becas\cn_man_generar_datos_becas_UNIVERSIDAD.php

cambien las apariciones donde diga:

				fwrite($handle, $textos[$i]['f_int_alumnos_becas'] . "\n");

y reemplacen eso por:

				$texto = $textos[$i]['f_int_alumnos_becas'] . "\n";
				if (mb_detect_encoding($texto) != 'UTF-8') {
					$texto = mb_convert_encoding($texto, "UTF-8");
				}
				fwrite($handle, $texto);

Gracias Diego por tu aporte!

Probamos y convierte ok; solo con una pequeña modificación… directamente forzamos a que convierta, sin el “if” que por esa condición no hacía la conversión.

Quedaría así el reemplazo:

$texto = $textos[$i]['f_int_alumnos_becas'] . "\n";
$texto = mb_convert_encoding($texto, "UTF-8");
fwrite($handle, $texto);

Saludos, Milva

si, nosotros, lo implementamos de la siguiente manera:

		// Archivo alumnos
		$filename = $dir_name.'alumnos.txt';
		if (!file_exists($filename)) {
			$handle = fopen($filename, 'wb');
			while ($i < $cantidad_textos) {
				if ($textos[$i]['f_int_becas_belgrano_progresar'] == '#SECCION1# **************** Inicio archivo alumnos.txt *****************') {
					$i++;
				} elseif ($textos[$i]['f_int_becas_belgrano_progresar'] == '#SECCION1# **************** Fin archivo alumnos.txt *****************') {
					$i++;
					break;
				} else {
					$texto = $textos[$i]['f_int_becas_belgrano_progresar'] . "\n";
					$encoding = mb_detect_encoding($texto, ['UTF-8', 'ISO-8859-1', 'Windows-1252'], true);
					if ($encoding != 'UTF-8') {
						$texto = mb_convert_encoding($texto, "UTF-8",$encoding);
					}
					fwrite($handle, $texto);
					$i++;
				}
			}
			fclose($handle);
		}
		$zip->addFile($filename, basename($filename));

eso es solamente para alumnos.txt, pero se aplica la misma solución a cada archivo de texto…

preferí el if mb_detect_encoding porque en teoría debería ser más performante, pero claramente se podría sacar.