Problemas con tildes y ñ php vs mysql

Yokoshimax

Capo
Se incorporó
19 Noviembre 2007
Mensajes
332
Problemas con tildes y ñ php vs mysql

Me llega a dar verguenza preguntar esto, pero ya estoy metido con este problema y he buscado harto pero no logro solucionar mi problema.

Como excusa es que llevo su buen tiempo trabajando sobre php, pero desde hace años sobre CakePHP, pero esta vez para lo que tenía que hacer no ameritaba poner un framework, así que lo hice a lo macho no más.

Problema, al guardar tildes o ñ estos son guardados en la base de datos como caracteres estos aéÃ, al imprimirlos con un simple echo se me muestran igual.

La base de datos tiene cotejamiento utf8_general_ci al igual que los campos.

Ocupo la siguiente librería:

https://github.com/indieteq/PHP-MySQL-PDO-Database-Class

que dentro de sus lineas tiene la conexión con utf8
PHP:
$this->pdo = new PDO($dsn, $this->settings["user"], $this->settings["password"], array(PDO::MYSQL_ATTR_INIT_COMMAND => "SET NAMES utf8"));
Al inicio del html dentro del php tengo declarado:
PHP:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"><html xmlns="http://www.w3.org/1999/xhtml">    <head>	<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />    </head>
También probé con php al inicio de cada archivo
PHP:
header('Content-Type: text/html; charset=UTF-8');
y sigo teniendo el mismo problema.

Solicito me agarren a chuchas y me digan que estoy haciendo mal. GRACIAS!
 

Matjazz

asdf
Se incorporó
18 Agosto 2007
Mensajes
1.196
Re: Problemas con tildes y ñ php vs mysql

al hacer la conexion, inmediatamente despues realiza esta consulta

mysql_query("SET NAMES 'utf8'",$conexion);

o en caso que uses mysqli (que yo creo usas)

mysqli_query("SET NAMES 'utf8'",$conexion);
 
Upvote 0

Yokoshimax

Capo
Se incorporó
19 Noviembre 2007
Mensajes
332
Re: Problemas con tildes y ñ php vs mysql

Gracias por tu respuesta, me conecto con PDO, y se está declarando la conexión con UTF-8

$this->pdo = new PDO($dsn, $this->settings["user"], $this->settings["password"], array(PDO::MYSQL_ATTR_INIT_COMMAND => "SET NAMES utf8"));

anyone help me :verguenza: :zippyuy:
 
Upvote 0

Kitsune

Fanático
Se incorporó
5 Mayo 2006
Mensajes
1.029
Re: Problemas con tildes y ñ php vs mysql

Ojo que en mysql puedes setear el collation por tabla y por campo. No tendrás otro distinto en estos?

y si usas latin_spanish_ci?
 
Upvote 0

Yokoshimax

Capo
Se incorporó
19 Noviembre 2007
Mensajes
332
Re: Problemas con tildes y ñ php vs mysql

Ojo que en mysql puedes setear el collation por tabla y por campo. No tendrás otro distinto en estos?

y si usas latin_spanish_ci?

En tabla y campos están como utf8_general_ci
PHP:
CREATE TABLE `noticias` (  `id` char(36) NOT NULL,  `titulo` varchar(255) NOT NULL,  `bajada` varchar(255) NOT NULL,  `link` text NOT NULL,  `campeonato_id` char(36) NOT NULL,  `visible` tinyint(1) NOT NULL DEFAULT '1',  `creada` datetime NOT NULL,  PRIMARY KEY (`id`)) ENGINE=InnoDB DEFAULT CHARSET=utf8;

Había probado esa opción (solo por salir de la duda, ya que la encuentro "parche" porque debería funcionar bien con utf8_general_ci) pero no funciona tampoco

estoy que lloro!
 
Upvote 0

Matjazz

asdf
Se incorporó
18 Agosto 2007
Mensajes
1.196
Re: Problemas con tildes y ñ php vs mysql

en el doctype, o en el header, cambia el utf8 por iso

Código:
[COLOR=#000000] [COLOR=#0000BB]header[/COLOR][COLOR=#007700]([/COLOR][COLOR=#DD0000]'Content-Type: text/html; charset=[B]ISO-8859-1[/B]'[/COLOR][COLOR=#007700]);  [/COLOR][/COLOR]

- - - Updated - - -

aunque, antes... insisto.

con la clase que estás usando, realiza la consulta de set names.

Código:
$PDO->funcionquehacequery([COLOR=#DD0000][FONT=monospace]"SET NAMES 'utf8'"[/FONT][/COLOR][COLOR=#007700][FONT=monospace])[/FONT][/COLOR]

y tambien, agregale comillas al utf8, porsiaca nomas
 
Upvote 0

Yokoshimax

Capo
Se incorporó
19 Noviembre 2007
Mensajes
332
Re: Problemas con tildes y ñ php vs mysql

Wajaja, esta wea no me quiere!

Probé el content type, pero los caracteres cambiaron a otros jeroglíficos, nuevas inserciones de datos también.

Incluí la linea que hace a PDO ocupe utf-8 y sigue igual.

Por lo que estoy cachando, es la libería que está haciendo una sanitización y esta me termina conviertiendo los caracteres

PHP:
if(!empty($this->parameters)) {					foreach($this->parameters as $param)					{						$parameters = explode("\x7F",$param);						$this->sQuery->bindParam($parameters[0],$parameters[1]);					}						}
 
Upvote 0

Miguelwill

I am online
Miembro del Equipo
MOD
Se incorporó
23 Febrero 2004
Mensajes
12.272
Re: Problemas con tildes y ñ php vs mysql

ya probaste hacer algun pequeño php que use la clase PDO para una inserción ?
con eso puedes descartar varias cosas
 
Upvote 0

Yokoshimax

Capo
Se incorporó
19 Noviembre 2007
Mensajes
332
Re: Problemas con tildes y ñ php vs mysql

ya probaste hacer algun pequeño php que use la clase PDO para una inserción ?
con eso puedes descartar varias cosas

No, pero hice unos cambios en la liberaría que ocupe y por lo menos cache que al momento de leer estaba haciendo a todos los parámetros un UTF8 enconde, saqué la función y la lectura funciono de pelos. A todas luces el problema está en la librería, así que buscare otra o derechamente haré una yo.

Gracias!
 
Upvote 0

Miguelwill

I am online
Miembro del Equipo
MOD
Se incorporó
23 Febrero 2004
Mensajes
12.272
Re: Problemas con tildes y ñ php vs mysql

Ah genial, suerte

Enviado desde mi Moto XXX con Android 5.1
 
Upvote 0

Yokoshimax

Capo
Se incorporó
19 Noviembre 2007
Mensajes
332
Re: Problemas con tildes y ñ php vs mysql

Ah genial, suerte

Enviado desde mi Moto XXX con Android 5.1


Logré solucionar el tema, mi problema son 2, el primeor y grande es que a lo que yo uso le llamo librearía, siendo que es una clase y el segundo es que en la clase se estaba haciendo esta linea.
PHP:
$this->parameters[sizeof($this->parameters)] = ":" . $para . "\x7F" . utf8_encode($value);

Lo cual hacia que al momento de guardar y rescatar pasaba a uft8 lo que ya estaba en utf8.

54469443.jpg
 
Upvote 0
Subir