Autor Tema: Duda sobre Charset en PHP  (Leído 4904 veces)

0 Usuarios y 2 Visitantes están viendo este tema.

Desconectado NoeL

  • Administrator
  • The Communiter-
  • *
  • Mensajes: 3257
    • SvCommunity
Duda sobre Charset en PHP
« : abril 04, 2008, 02:58:21 pm »
me he topado con el siguiente problema, en php cuando uso el charset iso-8859-1 puedo ver todas las tildes y ñ's del texto que tengo en mis paginas, pero los datos extraidos de la base de datos salen como simbolos raros, si hago lo contrario se muestran bien los datos de la base de datos pero no los de las paginas que debo hacer alguien que me ilumine

Desconectado cecy

  • -<- SvPrincess ->-
  • MiembrosReales
  • *
  • Mensajes: 22
Re: Duda sobre Charset en PHP
« Respuesta #1 : abril 04, 2008, 03:00:56 pm »
podes usar htmlentities(): http://www.php.net/manual/es/function.htmlentities.php

Desconectado mxgxw

  • Global Moderator
  • The Communiter-
  • *
  • Mensajes: 5665
  • Starlet - 999cc
    • mxgxw
Re: Duda sobre Charset en PHP
« Respuesta #2 : abril 04, 2008, 03:25:40 pm »
podes usar htmlentities(): http://www.php.net/manual/es/function.htmlentities.php

Si conoces el CHARSET de tu base de datos, podes utilizar la siguiente funcion:

Código: [Seleccionar]
<?php
// Uso de iconv, para convertir de un charset a otro:
echo iconv("UTF-8","ISO-8859-1",$mitexto);
?>


Lo ideal sería que tuvieras tus páginas en codificación UTF-8, que me imagino es el formato de charset de tu página. La solución de usar htmlentities es mas rápida, pero tiene la desventaja que si trabajas con lenguajes con demasiados caracteres extraños, o muchas tildes o cosas por el estilo, te va a agregar varios caracteres extra para las entidades html.


Desconectado NoeL

  • Administrator
  • The Communiter-
  • *
  • Mensajes: 3257
    • SvCommunity
Re: Duda sobre Charset en PHP
« Respuesta #3 : abril 04, 2008, 03:42:57 pm »
ok, si conozco el charset de mi base de datos, es iso-8859-1 y en las paginas UTF-8, voy a probarlo a ver si funciona, muchas gracias a los dos

Desconectado mxgxw

  • Global Moderator
  • The Communiter-
  • *
  • Mensajes: 5665
  • Starlet - 999cc
    • mxgxw
Re: Duda sobre Charset en PHP
« Respuesta #4 : abril 04, 2008, 04:14:50 pm »
ok, si conozco el charset de mi base de datos, es iso-8859-1 y en las paginas UTF-8, voy a probarlo a ver si funciona, muchas gracias a los dos

tons al revez como le puse jejeje revisate la documentación tenes que tener habilitado el modulo iconv.dll en windows.

http://www.php.net/manual/es/ref.iconv.php

Ahh bueno otra cosa.... si con iconv seguis teniendo el problema, entonces es que el servidor no esta mandando el tipo de charset correcto... esto lo podes solucionar de dos formas.

La primera es poniendo al principio de la página:

Código: [Seleccionar]
<?php
header
("Content-type: text/html; charset=utf-8");
?>


Si te da problemas de que los encabezados ya fueron enviados, podes intentar poner la siguiente etiqueta en el html:

Código: [Seleccionar]
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />

Por cierto... ¿Que gestor de DB estas usando? dependiendo del gestor podes establecer la codificación de los resultados de las consultas, así te evitas tener que estar usando iconv a cada salida de texto.
« Última Modificación: abril 04, 2008, 04:23:46 pm por mxgxw »


Desconectado rdoggsv

  • Administrator
  • The Communiter-
  • *
  • Mensajes: 6530
  • "Once you go arch , u never go back"
    • SV CommunitY
Re: Duda sobre Charset en PHP
« Respuesta #5 : abril 04, 2008, 07:44:29 pm »
Pone el character type de la pagina en html en utf8 asi como te dijeron y tambien cambia el mysql a utf8 las tablas y todo eso y las variables de conexion para que todo trabaje en utf8 y no tengas problemas  :thumbsup:

Desconectado mxgxw

  • Global Moderator
  • The Communiter-
  • *
  • Mensajes: 5665
  • Starlet - 999cc
    • mxgxw
Re: Duda sobre Charset en PHP
« Respuesta #6 : abril 04, 2008, 08:45:51 pm »
Pone el character type de la pagina en html en utf8 asi como te dijeron y tambien cambia el mysql a utf8 las tablas y todo eso y las variables de conexion para que todo trabaje en utf8 y no tengas problemas  :thumbsup:

Fijate que.... lo mejor es que utilice el  mismo charset en la DB que en las paginas así no tiene que estar usando el ICONV... aunque depende del gestor, con MySQL solo cambias el charset, pero hay otros gestores que te permiten cambiar la codificacion en "el aire", como postgres.


Desconectado rdoggsv

  • Administrator
  • The Communiter-
  • *
  • Mensajes: 6530
  • "Once you go arch , u never go back"
    • SV CommunitY
Re: Duda sobre Charset en PHP
« Respuesta #7 : abril 05, 2008, 09:22:56 am »
Fijate que.... lo mejor es que utilice el  mismo charset en la DB que en las paginas así no tiene que estar usando el ICONV... aunque depende del gestor, con MySQL solo cambias el charset, pero hay otros gestores que te permiten cambiar la codificacion en "el aire", como postgres.

Pues el mysql tambien te permite cambiarla cuando ejecutas el SET NAMES antes de pedirle los datos si no me equivoco  x_x

Código: [Seleccionar]
http://dev.mysql.com/doc/refman/5.1/en/charset-connection.html

Citar
SET NAMES indicates what character set the client will use to send SQL statements to the server. Thus, SET NAMES 'cp1251' tells the server “future incoming messages from this client are in character set cp1251.” It also specifies the character set that the server should use for sending results back to the client. (For example, it indicates what character set to use for column values if you use a SELECT statement.)


Desconectado NoeL

  • Administrator
  • The Communiter-
  • *
  • Mensajes: 3257
    • SvCommunity
Re: Duda sobre Charset en PHP
« Respuesta #8 : abril 05, 2008, 09:53:47 am »
estoy utilizando el mysql, el problema que tengo al cambiar el charset en mysql es que cuando guardo datos con letras ñ o tildadas los inserta como caracteres raros por lo que me veo obligado a usar latín en mysql.