Comunidad de diseño web y desarrollo en internet online

Malditos acentos y codificaciones

Citar            
MensajeEscrito el 09 Ene 2012 01:23 pm
Buenas a todos,
mi programita PHP lee una web codificada en ISO, me traigo el HTML y lo cribo hasta que dar puramente con lo que quiero. Lo imprimo en el html que genero SIN META, sin nada, solo HTML, y las imprime bien, le pongo
<meta http-equiv="Content-type" content="text/html; charset=utf-8" />
Y las imprime bien
Le paso un utf8_encode a todas las variables y las imprime bien,
Le pongo header("Content-Type: text/html;charset=utf-8");en PHP.. y las imprime bien.
Les hago un insert a estas variables a una base de datos con cortejamiento UTF8 unicode, con los charsets en cada columna de utf8 spanish ci.... ¿y adivina que?, !no me coje ni un puto acento!!

Agradezco ayuda, saludos, neisserian.

Por neisserian89

65 de clabLevel



 

firefox
Citar            
MensajeEscrito el 09 Ene 2012 02:11 pm
la abse de datos tambien tiene que estar en UTF8, por defecto generalmente siempre las pone LATIN1

Por tuadmin

Claber

598 de clabLevel



Genero:Masculino  

firefox
Citar            
MensajeEscrito el 09 Ene 2012 04:32 pm
todo debe estar en UTF-8, html (o tus templates), DB y ademas debes poner el metatag para UTF-8, en caso de que tu DB no se pueda convertir a UTF-8 existen funciones de mysql para convertir las salidas del SELECT a UTF-8

Por Inyaka

Claber

3176 de clabLevel

9 tutoriales
2 articulos

Genero:Masculino   Desarrollador de GAIA

Programador y fotógrafo

chrome
Citar            
MensajeEscrito el 09 Ene 2012 04:48 pm
Ajá... ¿y la conexión a la base de datos también es UTF-8?.

Por DriverOp

Claber

2510 de clabLevel



 

opera
Citar            
MensajeEscrito el 09 Ene 2012 06:26 pm
utf-8 es un código exadecimal que se coloca en el inicio del documento. por tanto imprime una salida, por esto quizas algunos archivos no podrás tenerlos en utf-8, sobre todo por que tendrias problemas con el inicio de sesiones y header

para clases y archivos de configuración usa ascii, para archivos de lenguaje y templates usa utf-8.
recuerda también que con el uso de frameworks la vida es mas facil :D

Por Inyaka

Claber

3176 de clabLevel

9 tutoriales
2 articulos

Genero:Masculino   Desarrollador de GAIA

Programador y fotógrafo

chrome
Citar            
MensajeEscrito el 12 Ene 2012 07:53 am
Buenos dias y gracias por la respuestas, tengo el tema aparcado ahora mismo.
Como ya digo, tengo la base de datos en utf8 unicode, aunque lo pase todo a utf8_spanish_ci, y a todas las vars las paso a utf8, además la web tiene el meta de utf8. La cosa es que en según que columna me coje o no los acentos, con el mismo cortejamiento..

DriverOp, ¿a que te refieres con la conexión a la BD?
tengo mysql_connect, mysql_select_db y mysql_set_charset.

Saludos

Por neisserian89

65 de clabLevel



 

firefox
Citar            
MensajeEscrito el 12 Ene 2012 01:01 pm
Además de todo lo que mencionaste, MySQL tiene algo que se llama "cotejamiento de las conexiones" (traducción libre), esto quiere decir que MySQL puede y de hecho lo hace, interpretar los datos que viajan "por el cable" con una codificación diferente a la de la base de datos y la tabla.

Para poner la conexión en UTF-8 ejecuta:

Código MySQL :

SET NAMES 'utf8'

Inmediatamente después de establecer y seleccionar la conexión a la base de datos.

Por DriverOp

Claber

2510 de clabLevel



 

opera
Citar            
MensajeEscrito el 12 Ene 2012 03:46 pm

DriverOp escribió:

Además de todo lo que mencionaste, MySQL tiene algo que se llama "cotejamiento de las conexiones" (traducción libre), esto quiere decir que MySQL puede y de hecho lo hace, interpretar los datos que viajan "por el cable" con una codificación diferente a la de la base de datos y la tabla.

Para poner la conexión en UTF-8 ejecuta:

Código MySQL :

SET NAMES 'utf8'

Inmediatamente después de establecer y seleccionar la conexión a la base de datos.


huu esa no lo sabia :D

Por Inyaka

Claber

3176 de clabLevel

9 tutoriales
2 articulos

Genero:Masculino   Desarrollador de GAIA

Programador y fotógrafo

chrome
Citar            
MensajeEscrito el 17 Ene 2012 01:04 pm
Ahhh, perdón DriverOp, se me olvidó mencionarlo, tengo puesto en el php al que hago los includes un
mysql_query("SET NAMES 'utf8'");

Y nada.. mañana probaré en la base de datos real a ver si no me sigue dando errores, que esta de intranet la tengo un poco loca. Ya os cuento si hay novedades.

Saludos y gracias

Por neisserian89

65 de clabLevel



 

firefox
Citar            
MensajeEscrito el 17 Ene 2012 01:54 pm
y ya probaste con mysql_set_charset

http://es2.php.net/manual/es/function.mysql-set-charset.php

y si con eso aun no se visualiza bien, lo que se me ocurre es que, talves todo este en utf8, excepto tus datos, trata de probar con una tabla nueva , con datos en utf8, algo simple y sencillo

Por tuadmin

Claber

598 de clabLevel



Genero:Masculino  

firefox
Citar            
MensajeEscrito el 17 Ene 2012 03:51 pm
Hola
Hoy si voy a hacer las veces de contradictor, por varias razones:

1º Lo dicho por Inkaya es cierto en parte; o sea que la contradicción de DriverOp, sólo aplica en casos en que se mantenga Latin1 como charset por defecto.

2º No se en qué sistema estés trabajando. En Windows, MySQL trae una instancia de configuración que ayuda en la modificación del archivo my.ini (y ahí puedes especificar el charset).
Si usas Linux, puedes especificar el charset por medio de consola usando los comandos de arranque de mysqld --default-character-set para el conjunto de caracteres y a éste se puede añadir --default-collation ambos con utf8 sin necesidad de hacerlo a través de script.

Fuente:
http://dev.mysql.com/doc/refman/5.0/es/charset-server.html
http://dev.mysql.com/doc/refman/5.0/es/charset-metadata.html


3º La modificación de set names sólo se usa cuando el intérprete de comandos usa un set distinto. O sea, que si usas el mismo para todos, eso está de más. Sólo la he visto necesaria cuando trabajo en línea de comandos en Windows, porque no me acepta utf8; entonces uso set names latin1;

4º Aquí les dejo un enlace al blog de Juan Valencia, que te orienta qué más hacer para garantizar el manejo de UTF-8 en todo tu entorno web:

http://www.jveweb.net/archivo/2010/09/trabajando-con-utf8-en-php-mysql-y-apache.html

Éxitos

Por ElSiniestro

Claber

285 de clabLevel


1 articulo

Genero:Masculino  

Alguien que Ayuda

chrome
Citar            
MensajeEscrito el 17 Ene 2012 04:15 pm
ElSiniestro:
Respecto de 3º, me temo que usando cierto hosting argentino, he tenido que usarlo siempre y el servidor es Linux. Sin importar que la codificación de la tabla sea UTF-8, el servidor insiste en mandar los datos en Latin-1, la única forma de resolverlo fue usando set names 'utf-8'.

Por DriverOp

Claber

2510 de clabLevel



 

opera
Citar            
MensajeEscrito el 17 Ene 2012 04:37 pm
En el vínculo del 4º punto, se insinúa una solución al respecto agregando al archivo de configuración httpd.conf el default charset, pero eso también se puede hacer por medio de archivos .htaccess.

En definitiva, lo que pretendo es evitar al máximo el uso de consultas para configurar en tiempo de ejecución MySQL, para que sea más rápida la página.

Por ElSiniestro

Claber

285 de clabLevel


1 articulo

Genero:Masculino  

Alguien que Ayuda

chrome

 

Cristalab BabyBlue v4 + V4 © 2011 Cristalab
Powered by ClabEngines v4, HTML5, love and ponies.