Hola a todos, estoy haciendo una aplicación en español con las
siguientes caracterÃsticas:
Charset de la base de datos: utf-8.
Charset de mis ficheros fuentes: utf-8.
Charset de mi navegador: utf-8.
Charset de la cabecera meta: utf-8.
Con esto, era capaz de ver los datos bien con el visualizador de base de
datos pero en mi aplicación aparecÃan con caracteres raros.
Si cambio todo lo de arriba a charset iso-8859-15 sà se ve bien. La
pregunta es, ¿no deberÃa verse bien con todo utf-8? Me gustarÃa aplicar
utf-8 por si tengo que utilizar AJAX.
datos pero en mi aplicación aparecían con caracteres raros.
El tag meta esta pensado para cuando abres un archivo HTML de disco,
digamos. Para una pagina servida por una aplicacion web el charset a
utf8 ha de ir es la cabecera Content-Type, esa la tienes bien tambien?
(Esto desde la 1.2 es automatico salvo que configures otra cosa via
ActionController::Base.default_charset=.)
Si cambio todo lo de arriba a charset iso-8859-15 sí se ve bien.
Hola a todos, estoy haciendo una aplicación en español con las
siguientes caracterÃsticas:
Charset de la base de datos: utf-8.
Charset de mis ficheros fuentes: utf-8.
Charset de mi navegador: utf-8.
Charset de la cabecera meta: utf-8.
Con esto, era capaz de ver los datos bien con el visualizador de base de
datos pero en mi aplicación aparecÃan con caracteres raros.
Si cambio todo lo de arriba a charset iso-8859-15 sà se ve bien. La
pregunta es, ¿no deberÃa verse bien con todo utf-8? Me gustarÃa aplicar
utf-8 por si tengo que utilizar AJAX.
Gracias.
Mirate el archivo config/database.yml
DeberÃas tener esta lÃnea:
encoding: utf8
pero supongo que no la tendrás y por eso te falla.
Hola chicos.
Sí, tengo el content-type a utf-8 y el encoding: utf8 en el
database.yaml
He descubierto que cambiando mi tabla de InnoDB a MyIsam sí que
funciona
todo correctamente (lo que tengo que probar ahora es si con eso ya me
vale; es decir, probar a eliminar el encoding:utf8 en el
database.yaml,
etc. para saber qué es realmente lo que realmente hace falta)
No deberia hacer falta cambiar el tipo de la tabla, puede que se
escape algo.
Aparentemente tienes todas las configuraciones bien. Entonces el
siguiente punto sospechoso es la entrada de datos. Haces algun tipo de
carga de datos desde ficheros? Te suben por ejemplo CSVs, Excels,
logs…?
Hola a todos, estoy haciendo una aplicación en español con las
siguientes caracterÃsticas:
Charset de la base de datos: utf-8.
Charset de mis ficheros fuentes: utf-8.
Charset de mi navegador: utf-8.
Charset de la cabecera meta: utf-8.
Con esto, era capaz de ver los datos bien con el visualizador de base de
datos pero en mi aplicación aparecÃan con caracteres raros.
Si cambio todo lo de arriba a charset iso-8859-15 sà se ve bien. La
pregunta es, ¿no deberÃa verse bien con todo utf-8? Me gustarÃa aplicar
utf-8 por si tengo que utilizar AJAX.
Gracias.
Mirate el archivo config/database.yml
DeberÃas tener esta lÃnea:
encoding: utf8
pero supongo que no la tendrás y por eso te falla.
No deberia hacer falta cambiar el tipo de la tabla, puede que se
escape algo.
Aparentemente tienes todas las configuraciones bien. Entonces el
siguiente punto sospechoso es la entrada de datos. Haces algun tipo de
carga de datos desde ficheros? Te suben por ejemplo CSVs, Excels,
logs…?
– fxn
Lo del tipo de tabla lo hice porque lo và aquà [1]. Y efectivamente
funcionó.
Lo del tipo de tabla lo hice porque lo v� aqu� [1]. Y efectivamente
funcion�.
Lo de los datos s�, los subo con CSV. Pero vamos, yo ten�a una
aplicaci�n en ingl�s hace tiempo en Rails, donde yo misma met�a los
datos normal desde la aplicaci�n, y tambi�n ten�a esos problemas.
Ahi esta el problema, me apuesto una tapa de calamares a la romana.
Debes tener siempre el control del encoding del input.
En web esto funciona porque si la pagina esta en UTF8 los forms los
envia el navegador en UTF8 y todo va solo tal como Rails esta por
defecto desde la 1.2.
Si cargas un CSV o tienes cualquier otra fuente de datos externa has
saber en que encoding vienen las cosas, porque si no estan en UTF8
debes ser tu quien convierta el encoding a mano con iconv. Son los
datos convertidos por ti los que metes en base de datos en se caso, y
descartas los originales.
Si sabes en que vienen los CSVs porque controlas el origen entonces la
conversion va a pi�on, de otro modo se puede usar la libreria
charguess que implementa algunas heurisiticas y te da el encoding con
el que cree que el texto esta escrito, en ese caso es no hay certeza
pero es lo mas que puedes hacer.
Lo del tipo de tabla lo hice porque lo ví aquí [1]. Y efectivamente
funcionó.
Lo de los datos sí, los subo con CSV. Pero vamos, yo tenía una
aplicación en inglés hace tiempo en Rails, donde yo misma metía los
datos normal desde la aplicación, y también tenía esos problemas.
Ahi esta el problema, me apuesto una tapa de calamares a la romana.
Debes tener siempre el control del encoding del input.
En web esto funciona porque si la pagina esta en UTF8 los forms los
envia el navegador en UTF8 y todo va solo tal como Rails esta por
defecto desde la 1.2.
Si cargas un CSV o tienes cualquier otra fuente de datos externa has
saber en que encoding vienen las cosas, porque si no estan en UTF8
debes ser tu quien convierta el encoding a mano con iconv. Son los
datos convertidos por ti los que metes en base de datos en se caso, y
descartas los originales.
Si sabes en que vienen los CSVs porque controlas el origen entonces la
conversion va a piñon, de otro modo se puede usar la libreria
charguess que implementa algunas heurisiticas y te da el encoding con
el que cree que el texto esta escrito, en ese caso es no hay certeza
pero es lo mas que puedes hacer.
Si te envian por un post los datos, entendemos todos que estos datos han
de estar en utf8 para que se guarden bien en la base de datos no?
Si en un formulario hay un campo de texto el before filter que comentas,
que ahora ya no hace falta, forzaba que las cabeceras estuvieran en
utf-8
para que no hubiera problemas de encoding.
Lo que puedes probar es hacer la conversión y subir los dos archivos y
mirar que pasa.
O tambien mirar el encoding del archivo:
[sueisfine]$ file file.csv
file.csv: ISO-8859 text, with no line terminators
[sueisfine]$ file file_utf8.txt
file_utf8.txt: UTF-8 Unicode text, with no line terminators
Un saludo,
Francesc
On Dec 18, 2007, at 4:26 PM, Damaris F. wrote:
On Dec 18, 2007, at 3:55 PM, Damaris F. wrote:
met�a los
el que cree que el texto esta escrito, en ese caso es no hay certeza
pero es lo mas que puedes hacer.
Creo que alguien se ha ganado una tapita de calamares.
Francesc
On Dec 18, 2007, at 4:15 PM, Xavier N. wrote:
carga de datos desde ficheros? Te suben por ejemplo CSVs, Excels,
Ahi esta el problema, me apuesto una tapa de calamares a la romana.
datos convertidos por ti los que metes en base de datos en se caso, y
está en utf-8, los datos deberían insertarse como utf-8.
Yep, el problema es que no es asi.
MySQL asume que los bytes que envias son la representacion en UTF8
de los datos, y es responsabilidad del programador que vayan asi. No
hay ninguna conversion implicita. Por tanto has de procesar el CSV o
el cargador SQL primero para que este en UTF8, y una vez hecho esto es
que cargas los datos en la base de datos.
Tu ten la tabla en utf-8 y entra desde terminal configurado con
iso-8859-1
a MySQL y mira como se te insertan los datos.
A mi entender que tengas la table en utf-8 no quiere decir que los datos
que entran se transformen en utf-8, para muestra lo que te esta
pasando no?
Tu mirate el formato que tiene tu fichero. Puedes hacer un “file
fichero.csv”
para confirmar el encoding del archivo.
El otro dia en el Ruby Meeting en Barcelona alguien comentó un capítulo
de no se que libro que habla de encoding, creo que estaria bien que
posteara
el titulo para poder echarle una ojeada. Yo hace unos meses leí un
libro de
Cal Handerson en el que le dedica parte a la
internacionalización. http://www.amazon.com/exec/obidos/ASIN/0596102356
Un saludo,
Francesc
On Dec 18, 2007, at 5:06 PM, Damaris F. wrote:
Que el
script me da igual como esté, vaya (digo yo). Que si mi tabla pone que
está en utf-8, los datos deberían insertarse como utf-8.