UTF-8, mi gran "PUÑAL" clavado....

UTF-8, mi gran "PUÑAL" clavado....

de Raul Garcia Canet -
Número de respuestas: 17
Hola a todos,
Estoy desesperado, ya no se que hacer con la codificación.
El caso es el siguiente:

1- Estoy en moodle Moodle 1.6.2+ (2006050521) con la BD en latin1 en todas las tablas, columnas y demás. Los datos estan guardados correctamente, con sus ecentos y sus eñes y demás.
2.- He actualizado a la Moodle 1.7.1+ (2006101010). Teóricamente la migración de la base de datos ha funcionado correctamente, pero ahora se me muestra en pantalla textos como : "Espa?ol, NOT?CIAS ". En la BD(directamente) aparecen de esa manera, cuando antes de migrar aparecían bien.
3.- Utilizo el "Activar edición" y cambio los textos desde el editor HTML, escribiendo "Español,NOTÍCIAS..." con las eñes y los acentos, etc..., y el resulatdo es: "Español,NOTÃCIAS...", aunque en la BD aparece correctamente escrito. (Eespañol, NOTÍCIAS).

Que tengo:
- El charset de la página es UTF-8
- La codificación del navegador detecta y se establece en UTF-8
- Respecto a la base de datos MYSQL.
Server characterset: utf8
Db characterset: utf8
Client characterset: utf8
Conn. characterset: utf8
- Lenguajes de moodle instalado es: en_utf8, es_utf8
Versiones:
Moodle 1.7.1+ (2006101010)
Apache/2.0.58
MySQL 5.0.26
PHP 5.1.6-pl6

NOTA: Todo esto lo he hecho en local, ya que el sitio en producción sigue en Moodle 1.6.2+ (2006050521)
Estoy bastante desesperado, necesito poner en producción la nueva actualización a la 1.7 pero de esa manera no puedo, necesito que los caractres se vean correctamente. ¿Me dejo algo?¿he hecho algo mal?.

Muchas gracias por vuestra ayuda.
Hasta pronto.
Salu2
J. Raul (juagarc4) guay
Promedio de valoraciones: -
En respuesta a Raul Garcia Canet

Re: UTF-8, mi gran "PUÑAL" clavado....

de fco javier gonzalez ortiz -
Intenta esto:
Cambia en /etc/apache/httpd.conf" la directiva
AddDefault a Off.

Un saludo
En respuesta a fco javier gonzalez ortiz

Re: UTF-8, mi gran "PUÑAL" clavado....

de Raul Garcia Canet -
Hola Fco. Javier,
Gracias por la pronta respuesta.
Disculpa el retraso en responder. Lo que me dices es una de las cosas que he probado y nada, de nada.
De hecho, cuando hago algún cambio desde el editor HTML de moolde, en la base de datos se guarda correctamente, pero a la hora de visualizarlo desde el navegador, no hay manera. Estoy un poco desesperado. Tengo TODO en utf-8 y ya no se dónde mirar.triste
Sigo haciendo pruebas, pero la verdad es que, a estas alturas, ya es un poco a la desesperada, por probar. triste
Gracias otra vez por tu respuesta.

Hasta pronto.
Salu2.
J.Raúl (juagarc4) guay
En respuesta a Raul Garcia Canet

Re: UTF-8, mi gran "PUÑAL" clavado....

de agustin rico -

juan raul:

instala el paquete en español es_es UTF8 ya que el paquete de es_utf8 da esos problemas, a mi me sucedio.

generalmente el paquete es_esUTF8 en español, trae las codificaciones correctas, para que aparezcan los acentos y las ñ.

en el area de idiomas, de la version 1.71+ se instala y como "forza" a los usuarios de cada curso a esas ese idioma.

espero haber adyudado en algo, buena suerte saludos.

atte

dr. agustin rico guzman

En respuesta a agustin rico

Re: UTF-8, mi gran "PUÑAL" clavado....

de Raul Garcia Canet -
Hola Fco. Janvier y Agustín,

Cuando dije la versión 1.7, me refería a la última versión de la 1.7.1+, lo siento, debí especificar mejor. De toda formas no funciona con ninguna.

Por otro lado, Agustín , el paquete de idioma es.es_utf8 ya no existe, por lo que no puedo instalarlo.
De t odas maneras intentaré localizarlo en algún sitio (seguro que tengo alguna copia en algún CD), nunca está demás probar otras soluciones. Aunque no debería ser así, porque el idoma es_es.utf8 es una versión reducidad el es_utf8. No obstante, lo probaré.

Muchas gracias por vuestra ayuda.
En cuanto lo resuelva (si averigüo lo que ha sido), lo postearé aquí por si alguien tiene alguna vez (espero que no:-O) el mismo problema.

Hasta pronto.
Salu2.
J. Raul (juagarc4) guay

En respuesta a Raul Garcia Canet

Re: UTF-8, mi gran "PUÑAL" clavado....

de fco javier gonzalez ortiz -
Te envio este correo en el foro de Luis Felipe Urdaneta Fereira -que decia lo siguiente:
Yo particularmente revisé varios programas en los cuales se usa el idioma y por mucho que luché no pude quitar el error.

Lo solucionamos de la siguiente manera
1. Bajamos la version de moodle 1.8, esta versión te hace la actualización de cualquiera de las versiones de moodle que tengas instalada y a pesar de ser una versión beta funciona excelentemente bien
2. En el archivo index.php que está en la direccion moodle/www, la primera línea tiene 'EN', la modificamos colocando 'ES'
3. El archivo moodle.php que está en la dirección www\moodle\lang\en contiene las siguientes instrucciones
$string['thislanguage'] = 'English';
$string['thischarset'] = 'iso-8859-1';
$string['locale'] = 'en';
$string['parentlanguage'] = 'en_utf8';

nosotros las cambiamos por

$string['thislanguage'] = 'Spanish';
$string['thischarset'] = 'iso-8859-1';
$string['locale'] = 'es';
$string['parentlanguage'] = 'es_utf8';

4. Bajamos de internet los archivos de lenguajes ("es" y "es_utf8")
el archivo "es_utf8" lo bajamos de http://download.moodle.org/lang16/
el archivo "es" lo bajamos de http://download.moodle.org/lang15/
los descomprimimos y los copiamos a la dirección \www\moodle\lang

Por mirarlo no se pierde nada.
Un saludo de Fco Javier.
En respuesta a Raul Garcia Canet

Re: UTF-8, mi gran "PUÑAL" clavado....

de Eloy Lafuente (stronk7) -
Imagen de Desarrolladores Imagen de Desarrolladores de plugins Imagen de Documentadores Imagen de Moderadores Imagen de Moodle HQ Imagen de Moodlers de gran ayuda Imagen de Testers
Hola JR,

y yo que pensaba que habías logrado solucionar el problema hace tiempo! triste

Re-veamos....

1) Tienes un Moodle 1.6.2 con la BD en latin1 (las tablas y los campos). Y todo te funciona Ok con ella. Sip?

2) Has creado un nuevo Moodle 1.6.2 (en un servidor de pruebas) con esa base de datos (latin1) y te funciona correctamente también, si?

3) Ese servidor de pruebas lo has actualizado a Moodle 1.7.1+ y, tras la actualización (pero sin la migración a unicode!!!) comienzan los problemas, correcto? O, los problemas comienzan después de la actualización y la migración a unicode?

Es importante saber si los problemas son inmediatamente después de la actualización o inmediatamente después de la migración a Unicode.

Yo no "jugaría" con los idiomas de Moodle, ni con andar modificando cosas de la base de datos manualmente. De verdad que creo que el "truco" está en averiguar en qué momento y porqué se te "descacharra" el asunto.

Ciao sonrisa
En respuesta a Eloy Lafuente (stronk7)

Re: UTF-8, mi gran "PUÑAL" clavado....

de Raul Garcia Canet -
Hola a todos,
Fco. Javier, garcias por la respuesta, pero no creo que tocar así, a pelo, los lenguajes sea muy buena idea. En cierta ocasión hice lo mismo y la verdad, la experiencia no fue muy agradable.

Bueno, Eloy, en aquella ocasión descubrí que el problema estaba en el propio sistema ya que trabajaba en Iso-8859-1 y de ahí que las conexiones con el servidor y demás se hicieran mal en UTF-8.
Como sabía que iba a cambiar el sistema en poco tiempo decidí dejarlo todo en latin 1 y funcionar así. Ahora la nueva versión 1.7.1+ de moodle ya me requiere el UTF-8, así que en el nuevo servidor (que aún no está en producción) he configurado todo en UTF-8 para evitar problemas.
Escenario:
Servidor en producción (todo en ISO-8859-1)-> Linux Debian Sarge
Servidor de Pruebas (local) -> Windows XP
Servidor Nuevo (no en producción): UTF-8 -> Linux Gentoo 2006.1

El caso es que, repondiendo a lo que preguntas:
1) Tienes un Moodle 1.6.2 con la BD en latin1 (las tablas y los campos). Y todo te funciona Ok con ella. Sip?

Exacto.

2) Has creado un nuevo Moodle 1.6.2 (en un servidor de pruebas) con esa base de datos (latin1) y te funciona correctamente también, si?

Exacto pero con matices.
En el servidor de pruebas he hecho la migración a UTF-8(BD y Tablas, columnas, etc...) desde el script de Moodle y ha ido todo como la seda, PERFECTO guiño
Posteriormente, ese servidor de pruebas lo he actualizado a Moodle 1.7.1+ y no ha habido ningún problema. De hecho, cuando accedo a él con el Navegador se ve perfectamente.

3) He cogido los directorios (moodle, BD y mdledata) del servidor de pruebas y los he copiado directamente sobre el Servidor Nuevo (cada uno dónde le toca).
Error, los acentos y eñes no se ven bien, pero la codificación del navegador es detectado como UTF-8 y en las págians el charset es UTF-8 y en la BD los textos están almacenados correctamente.

Ahora bien, una cosa que me llama la atención:
Desde el phpMyAdmin, conecto al Servidor local de MySQL y em aparece una línea que dice: "Servidor: localhost via TCP/IP"

En cambio en el Servidor Nuevo me dice: "Servidor: Localhost via UNIX socket"
¿Puede ser este el problema?
No se, ya me da por pensar cosas raras.
También se me ocurre que haya algún equipo intermedio (proxi, firewall, router, etc..) que pueda estar trabajando en iso-8859-1 y que me esté trastocando los datos durante el camino. Aunque es un poco rebuscado. sorpresa

En fin, espero encontrar algo pronto o me dará algo (ya sueño en unicode y todo, arrrrggggg sorpresa)
Muchas gracias por vuestras respuestas.

Hasta pronto.
Salu2.
J. Raúl (juagarc4) guay
En respuesta a Raul Garcia Canet

Re: UTF-8, mi gran "PUÑAL" clavado....

de Eloy Lafuente (stronk7) -
Imagen de Desarrolladores Imagen de Desarrolladores de plugins Imagen de Documentadores Imagen de Moderadores Imagen de Moodle HQ Imagen de Moodlers de gran ayuda Imagen de Testers
Perfecto! (casí guiño ).

por tu respuestas asumo que:

1) El servidor de producción, corriendo Moodle 1.6.2 en modo latin1, todo perfecto.

2) El servidor de pruebas, corriendo Moodle 1.7.1+ en modo utf-8, todo perfecto.

3) En el momento de copiar el servidor de pruebas al servidor nuevo, es cuando se te reproducen los problemas.

Luego, tenenmos que analizar cómo estas copiando los directorios de un servidor a otro. Más específicamente la Base de Datos (los directorios "moodle" y "moodledata" se copian normalmente y no tienen mucho que ver con el problema).

Nuevas preguntas:

1) Cómo estás copiando la BD? (copiando directamente el directorio de mysql en donde están todas las tablas, con un dump realizado con phpmyadmin o con un dump realizado desde línea de comandos?

2) En el caso de que NO estés utilizando un dump, inténtalo haciendo un dump.

3) En el caso de que SÍ estés utilizando un dump, si editas el dump con un editor UTF-8, cómo ves los acentos?

4) En el caso de que veas los acentos bien, cómo estás importando ese dump en el servidor nuevo?

Aupa, Eloy sonrisa
En respuesta a Eloy Lafuente (stronk7)

Re: UTF-8, mi gran "PUÑAL" clavado....

de Raul Garcia Canet -
Hola Eloy,
Gracias por la pronta respuesta. Te contesto:

1) Cómo estás copiando la BD? (copiando directamente el directorio de mysql en donde están todas las tablas, con un dump realizado con phpmyadmin o con un dump realizado desde línea de comandos?

He hecho las tres opciones y la que mejor resultado ma ha dado ha sido la siguiente:

a.-Comprimo el directorio moodle, del directorio data de mysql, en un zip (moodle.zip).
b.-Copio ese zip usando SCP desde el servidor nuevo, es decir, estoy en directorio data de mysql en el servidor nuevo y hago (todo en una linea, claro):
scp usuario@ip_servidor_producion:/ruta/moodle.zip directorio_en_servidor_nuevo/moodle.zip
c.- Una vez copiado, lo descomprimo usando unzip.

2) En el caso de que NO estés utilizando un dump, inténtalo haciendo un dump.

Lo he intentado y no funciona, fue una de las primeras opciones.
En un primer dump, hecho desde el phpmyadmin, se guardó el formato
del fichero en utf-8 y lo importe a la nueva BD del servidor nuevo y al
aplicar el script se convertía mal, ya que el fichero tenía formato utf-8
pero los datos no. Deseché esa opción.

El otro dump lo hice desde la BD de producción (latin1), con phpmyadmin
y lo importé directamente al nuevo server en latin1 y le apliqué el script
de conversión y se convertía bien, pero se visualizaba mal. No creo que
sea el dump.

El tercero lo hice desde la línea de comandos y lo importé también desde
la línea de comandos. El resultado fue el mismo que en el segundo.

3) En el caso de que SÍ estés utilizando un dump, si editas el dump con un editor UTF-8, cómo ves los acentos?

Cuando usé el dump, lo abrí con en VIM (que soporta UTF-8) y se veían bien los acentos.

4) En el caso de que veas los acentos bien, cómo estás importando ese dump en el servidor nuevo?

Cuando hice el dump lo importé de dos formas:
a.- Usando el phpMyAdmin
b.- Con el comando mysql
En ambos casos, el resultado fue el mismo, la importación se hizo correctamente y en la BD se veían los textos correctamente, pero en el navegador NO.

De hecho, accedo directamente a la BD (con el phpmyadmin) y veo los datos con acentos y eñes y todo correcto, pero al verlo con el navegador no se ve bien cuando está en el nuevo servidor. Cuando está en el servidor de prueba se ve perfectamente con el navegador.

No se si esto aclarará algo, ya te digo que he probado mil combinaciones. Lo único que me tranquiliza es que en la BD los datos están bien gran sonrisa

Gracias por todo.
Hasta pronto.
Salu2
J.Raul (juagarc4) guay
En respuesta a Raul Garcia Canet

Re: UTF-8, mi gran "PUÑAL" clavado....

de Eloy Lafuente (stronk7) -
Imagen de Desarrolladores Imagen de Desarrolladores de plugins Imagen de Documentadores Imagen de Moderadores Imagen de Moodle HQ Imagen de Moodlers de gran ayuda Imagen de Testers
Hola JR,

unos pequeños comentarios sobre la copia de bases de datos entre servidores:

1) Por pruebas que realizo continuamente entre Mac y la Pcera he comprobado que, en algunas ocasiones, la opción de copiar el directorio data de mysql tiene unos cuantos fallos, más si las versiones de MySQL de los servidores son distintas. Por el contrario, esta opción parece ser 100% segura cuando lo utilizas dentro del mismo servidor y misma versión del MySQL.

2) Por ello, para copiar bases de datos entre servidores siempre suelo utilizar el dump de MySQL (ya sea desde phpMyAdmin o desde línea de comandos) con un importante detalle: Con phpMyAdmin hubo algunas versiones (no recuerdo números exactos), que la opción de exportar BD producía dumps completamente "chungos", así que te recomiendo que actualices a una versión actual de esa utilidad.

3) Dependiendo de cómo transmitas ese dump de MySQL desde el servidor de origen al de destino, hay algunas herramientas de FTP que tienen la maldita costumbre de tratar de ser demasiado listas, realizando de forma automática ciertas conversiones con los ficheros de texto. Te recomiendo que siempre transmitas los ficheros en binario (poniendo es modo de ftp, si es el caso, o procediendo a enviar el archivo en algún formato comprimido, zip, gzip...).

Con todo esto, se me ocurre lo siguiente:

1) En el servidor de pruebas, que está corriendo Moodle 1.7.1+ y en el que todo parece funcionarte ok, realiza un dump de la base de datos.

2) Envíame, comprimido (privado), un "pedazo" de la misma (1 o 2 tablas que tengan acentos y demás. Omite datos personales y esas cositas (tabla de usuarios). No tengo ningún interés en ella. guiño Pero sí tengo interés en la tabla config. Especial interés! Y alguna que contenga acentos, como los foros o similares.

3) Compruebo ese fichero, para ver cómo está y entonces:

3a) si veo que no es correcto, te lo comento. El problema está en la manera de realizar el dump.

3b) si veo que tiene buena pinta lo cargo en mi servidor de desarrollo (privado) y te digo cómo lo he hecho exactamente. Si haciendo lo mismo no te funciona, el problema está en la forma de importar el dump.

Te parece? Algún problema? Ciao sonrisa
En respuesta a Eloy Lafuente (stronk7)

Re: UTF-8, mi gran "PUÑAL" clavado....

de Iñaki Arenaza -
Imagen de Desarrolladores Imagen de Desarrolladores de plugins Imagen de Documentadores Imagen de Moderadores Imagen de Moodlers de gran ayuda

Un detalle que también hay que tener en cuenta a la hora de hacer los volcados con mysqldump (que es lo que yo suelo usar) es indicarle que en el volcado use el juego de caracteres que le hemos puesto a la base de datos.

You suelo usar algo del estilo de:

mysqldump --add-drop-table --compatible=XXXXX --complete-insert --create-options --default-character-set=YYYYYY --no-create-db --set-charset nombre-base-de-datos > fichero-de-volcado

donde XXXXXX puede ser 'mysql323' o 'mysql40' (sin las comillas) dependiendo de que la base de datos donde vayamos a restaurar el volcado sea una 3.x o una 4.x, e YYYYYY es el juego de caracteres a usar por la base de datos por defecto (si no se especifica este parámetro, las últimas versiones de MySQL suponen que es UTF-8).

Saludos. Iñaki.

En respuesta a Iñaki Arenaza

Re: UTF-8, mi gran "PUÑAL" clavado....

de Juan Emilio Fuentes -
Estimados:
Yo quisiera alguna ayuda en el problema que estoy confrontando que es el siguiente:
He tratado de traducir despues de instalar el portfolio de la SPDC. Hice la traducción de los archivos del lang del mismo. La plataforma no me reconoce los acentos ni las eñes. Comprobe que en el WordPad y el Block de notas estoy usando la codificación utf8 al salvar e hice y puse un fichero moodle para la versión en español estoy usando es_utf8 igual al que viene en la versión en inglés y nada no logró que el servidor interprete correctamente la codificación.
Que podría hacer?.
Dándoles las gracias por anticipado,
Juan
En respuesta a Iñaki Arenaza

Re: UTF-8, mi gran "PUÑAL" clavado....

de Raul Garcia Canet -
Hola Iñaki,

Gracias por la respuesta.
Bueno, desde el mysqldump, he probado esa opción y tampoco he obtenido resultados, pero..., una pregunta (bueno, dos gran sonrisa) :

¿Qué tiene que ver el parametro --compatible en el dump?
¿De que manera puede influir este parámetro si la base de datos de origen y destino son la 5.0.x?

Gracias por vuestra ayuda.
Salu2.
J. Raul (juagarc4) guay
En respuesta a Raul Garcia Canet

Re: UTF-8, mi gran "PUÑAL" clavado....

de Raul Garcia Canet -
Hola a todos,

¡POR FIN!, ya etsá solucionado el problema. Gracias a Eloy, gran sonrisa ,por fin se ha encontrado el problema.
Al final resulta, que no se porque, el filtro TIDY estaba causando la conversión errónea de caracteres.
En el archivo /moodle/filters/tidy/filter.php, la función

$text = tidy_repair_string($text, $tidyoptions);

asumía por defecto que el encodíng de salida debía ser ascii y no utf-8.
Al principio he desactivado el filtro tidy y ha funciobado todo correctamente.
Después he cambiado por

$text = tidy_repair_string($text, $tidyoptions, "utf8");

Y he vuelto a activar el filtro.
Todo funciona perfectamente, y veo los acentos y todo.

Si a alguien le sucede lo mismo, al menos ya tiene otra pista para poder indagar.

Hasta pronto.
Salu2.
J. Raul (juagarc4) guay