Comunidad de diseño web y desarrollo en internet online

problemas con UTF-8

Citar            
MensajeEscrito el 19 Feb 2009 07:55 pm
Buenas: es mi primer post.

Estuve leyendo de posts anteriores sobre los errores en las tildes y otros caracteres en mi caso º ...

mi caso:

yo realizo lo sgte:

en mi servidor local : phpMyAdmin - 2.11.5
Juegos de caracteres de MySQL: UTF-8 Unicode (utf8)
Cotejamiento de las conexiones MySQL: utf-8 unicode_ci

He creado una BD cuyo cotejamiento es utf8_unicode_ci
y a su vez todas las tablas su cotejamiento es utf8_unicode_ci e inclusive señale que los campos que sean de tipo VARCHAR su cotejamiento tambien sean utf8_unicode_ci :lol:

Ahora en mis páginas HTML
esta este codigo:

Código :

<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />


Y en las páginas donde es solamente codigo php está:

Código :

header('Content-Type: text/html; charset=utf-8');


donde supuestamente deberia marchar a la perfección, verdad? ^^

el caso es al momento de registrar un dato que presenta una tilde ... visualmente en el html se ve normal, pero cuando veo ese dato en la BD sale con simbolos extraños por ejm: html:Oficio Nº y en mi BD: Oficio Nº :?


ahora cuando pretendo mostrar esos datos en <select> (combobox) , me sale segun esta mi BD osea Oficio Nº :S...
pero lo que me llama la atención es que si ese mismo valor lo muestro en una tabla sale: Oficio Nº :o

como podria solucionar mi gran problema? ... :cry:

P.D: adjunto una imagen para que observen a que me refiero:
[img]http://img26.imageshack.us/my.php?image=errormy5.png[/img]

Muchas Gracias de Antemano.

Atte. Erick Sanchez Cardenas

Por skillone

5 de clabLevel



 

Perú-Trujillo

firefox
Citar            
MensajeEscrito el 19 Feb 2009 08:56 pm

Por KB-27

Claber

301 de clabLevel



 

My very secret HQ

firefox
Citar            
MensajeEscrito el 20 Feb 2009 06:47 am
use el metodo que me indicaste,

Código :

utf8_encode($row["doc_nombre"])


pero me salio peor :S

Observa la imagen

Por skillone

5 de clabLevel



 

Perú-Trujillo

firefox
Citar            
MensajeEscrito el 20 Feb 2009 07:53 am
usa utf8_decode, no el utf8_encode

Por Joanlgr

15 de clabLevel



Genero:Masculino  

Eterno aprendiz

firefox
Citar            
MensajeEscrito el 20 Feb 2009 08:11 am
yeah!!!! ..tenias mucha razón! gracias ... ;)

Por skillone

5 de clabLevel



 

Perú-Trujillo

firefox
Citar            
MensajeEscrito el 21 Feb 2009 04:36 am
ahora si problema es en la BD ... los valores que se almacenan en la BD salen con codigos extraños :S

el cotejamiento de la BD y de las tablas he inclusive en los campos es: utf-8 unicode_ci

cual seria el posible problema?

Muchas Gracias

Por skillone

5 de clabLevel



 

Perú-Trujillo

firefox
Citar            
MensajeEscrito el 21 Feb 2009 05:34 pm
prueba poniendo despues de la consulta sql:
mysql_query("SET CHARACTER SET utf8");
mysql_query("SET NAMES utf8");

Por chug0

Claber

136 de clabLevel



 

Perú

firefox
Citar            
MensajeEscrito el 21 Feb 2009 05:58 pm
x ejm te refieres que haga esto?:

Código :

function registra_doc_adm($doc_adm) {
   
   $res = mysql_query("INSERT INTO documento (doc_nombre) VALUES(".
                  "'$doc_adm')");
   mysql_query("SET CHARACTER SET utf8");
   mysql_query("SET NAMES utf8");
   return $res;
}

Por skillone

5 de clabLevel



 

Perú-Trujillo

firefox
Citar            
MensajeEscrito el 21 Feb 2009 07:11 pm

Código PHP :

$sql = "SELECT * FROM categories WHERE parent=0 AND hidden=0 ORDER BY id";
   mysql_query("SET CHARACTER SET utf8");
   mysql_query("SET NAMES utf8");
   $cad = mysql_query($sql);
   if (!$cad) {
       die('Consulta Invalida: '. mysql_errno().' '. mysql_error());
   }
while($array = mysql_fetch_array($cad)) {
}


como clase:

Código PHP :

<?php

class MySQL{
   private $HOSTNAME="localhost";
   private $USERNAME="plin";
   private $PASSWORD="plin";
   private $DATABASE="plin";

   private $conexion;
   var $querys = 0;
   public function mysql(){
      if(!isset($this->conexion)){
         $this->conexion = (mysql_connect($this->HOSTNAME,$this->USERNAME,$this->PASSWORD)); 
         if (!$this->conexion){
            die('Error de conexion: '. mysql_errno().' '. mysql_error());
         }
         $db_selected = mysql_select_db($this->DATABASE,$this->conexion);
         if (!$db_selected){
            die('Error de Base de datos: '. mysql_errno().' '. mysql_error());
         }
      }
   }
   public function my_query($consulta){
      $this->querys++;
      mysql_query("SET CHARACTER SET utf8");
      mysql_query("SET NAMES utf8");
      $resultado = mysql_query($consulta,$this->conexion);
      if(!$resultado){
         echo "Consulta $consulta: ". mysql_errno(). mysql_error();
         exit;
      }
      return $resultado; 
   }
   public function fetch_array($consulta){ 
      return mysql_fetch_array($consulta);
   }
   public function num_rows($consulta){ 
      return mysql_num_rows($consulta);
   }
   function totalquerys(){
      return $this->querys;
   }
}
?>


para crear la consulta seria

al inicio del php pones una sola vez esto:

Código PHP :

$db = new mysql(); 


y la consulta es simplemente asi:

Código PHP :

$sql_category=$db->my_query("SELECT * FROM categories WHERE parent=0 AND hidden=0 ORDER BY id");

despues los trabajas

Código PHP :

while($array = $db->fetch_array($sql_category)) {
}

Por chug0

Claber

136 de clabLevel



 

Perú

firefox
Citar            
MensajeEscrito el 21 Feb 2009 08:01 pm
jejejeje... de esa forma no la se... vere como adecuarlo a mi manera de programar :O .. yo no se como programar php orientado a objetos... usando clases :O

Por skillone

5 de clabLevel



 

Perú-Trujillo

firefox
Citar            
MensajeEscrito el 22 Feb 2009 12:23 am
pues he utilizado tu estructura:

$sql = "SELECT * FROM categories WHERE parent=0 AND hidden=0 ORDER BY id";
mysql_query("SET CHARACTER SET utf8");
mysql_query("SET NAMES utf8");
$cad = mysql_query($sql);


y aun me sigue saliendo ese error T_T

Por skillone

5 de clabLevel



 

Perú-Trujillo

firefox
Citar            
MensajeEscrito el 22 Feb 2009 12:54 am
postea tu codigo

Por chug0

Claber

136 de clabLevel



 

Perú

firefox
Citar            
MensajeEscrito el 22 Feb 2009 12:57 am
una consulta mas ... cual es el cotejamiento que utilizas en tu servidor? (localhost)? ... y en tu BD?...


en breve posteare mi codigo ...

Por skillone

5 de clabLevel



 

Perú-Trujillo

firefox
Citar            
MensajeEscrito el 22 Feb 2009 01:17 am
en RegistroDocumento.php(diseño):
lo que es la parte de html:

Código :

<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />


luego manda a RegistroDocumento_Acceso.php
el cual contiene lo sgte:

Código :

<?php
header('Content-Type: text/html; charset=utf-8');
include_once("lib/logica/Documento.php"); 
$oDoc = validaDocumento($_POST['txtNombreDoc']);

if($oDoc == NULL)
{
   $res = registra_doc_adm($_POST['txtNombreDoc']);               
[code][/code]   if($res == 1){    
            header("Location: Administrador_MenuConfirmacion.php?acc=8");
   }   
   else {  
            header("Location: $page?acc=1");
   }               
}

else
{                  
      header("Location: Administrador_MenuError.php?acc=11");
}   

?>




y en lib/logica/Documento.php: (del metodo registra_doc_adm)

Código :

function registra_doc_adm($doc_adm) {

   $sql = "INSERT INTO documento (doc_nombre) VALUES(".
                  "'$doc_adm')";
   
   mysql_query("SET CHARACTER SET utf8_spanish_ci");
   mysql_query("SET NAMES utf8_spanish_ci");
   
   $res = mysql_query($sql);
   

   return $res;
}










si por ejm pretendo mostrar los valores ingresados en una tabla todo me sale ok!...

x ejm ingreso: Oficio Nº , pero en la BD se muestra: Oficio Nº

... si muestro de forma html... no tengo ningun problema... pero tengo casos en los cuales tengo que exportar a un PDF y es ahi donde se muestra el valor que esta almacenado en la BD :S (Oficio Nº)...

otro detalle el cotejamiento tanto de BD, tabla y campos donde sea VARCHAR es utf8_spanish_ci ...

ya no se como solucionarlo :S

y que pasa si uso :

en los html:

Código :

<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />


en los php:

Código :

header('Content-Type: text/html; charset=iso-8859-1')



eso estaria bien? ... y tb tendria que cambiar el cotejamiento de la BD a latin_spanish_ci ?

Muchas gracias...

Por skillone

5 de clabLevel



 

Perú-Trujillo

firefox
Citar            
MensajeEscrito el 04 Abr 2009 01:12 pm

skillone escribió:

en RegistroDocumento.php(diseño):
lo que es la parte de html:

Código :

<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />


luego manda a RegistroDocumento_Acceso.php
el cual contiene lo sgte:

Código :

<?php
header('Content-Type: text/html; charset=utf-8');
include_once("lib/logica/Documento.php"); 
$oDoc = validaDocumento($_POST['txtNombreDoc']);

if($oDoc == NULL)
{
   $res = registra_doc_adm($_POST['txtNombreDoc']);               
[code][/code]   if($res == 1){    
            header("Location: Administrador_MenuConfirmacion.php?acc=8");
   }   
   else {  
            header("Location: $page?acc=1");
   }               
}

else
{                  
      header("Location: Administrador_MenuError.php?acc=11");
}   

?>




y en lib/logica/Documento.php: (del metodo registra_doc_adm)

Código :

function registra_doc_adm($doc_adm) {

   $sql = "INSERT INTO documento (doc_nombre) VALUES(".
                  "'$doc_adm')";
   
   mysql_query("SET CHARACTER SET utf8_spanish_ci");
   mysql_query("SET NAMES utf8_spanish_ci");
   
   $res = mysql_query($sql);
   

   return $res;
}










si por ejm pretendo mostrar los valores ingresados en una tabla todo me sale ok!...

x ejm ingreso: Oficio Nº , pero en la BD se muestra: Oficio Nº

... si muestro de forma html... no tengo ningun problema... pero tengo casos en los cuales tengo que exportar a un PDF y es ahi donde se muestra el valor que esta almacenado en la BD :S (Oficio Nº)...

otro detalle el cotejamiento tanto de BD, tabla y campos donde sea VARCHAR es utf8_spanish_ci ...

ya no se como solucionarlo :S

y que pasa si uso :

en los html:

Código :

<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />


en los php:

Código :

header('Content-Type: text/html; charset=iso-8859-1')



eso estaria bien? ... y tb tendria que cambiar el cotejamiento de la BD a latin_spanish_ci ?

Muchas gracias...
hola gente, soy nuevo y neofito en esto. Alguno de ustedes me puede decir... ¿porque al querer actualizar o guardar datos en la base, lo único que me permite hacer cuando se envian aguardar es "TOMARTME UNICAMENTE NUMEROS" y no me permite almacenar alfanumericos... ????

Si alguno me puede ayudar desde ya muchicimas gracias.

Por hafmultimedia

1 de clabLevel



 

ahora

msie7
Citar            
MensajeEscrito el 06 Abr 2009 06:25 am
te dejas las comillas.

INSERT INTO tabla(campo_alfanumerico) VALUES('Datos')

Por Joanlgr

15 de clabLevel



Genero:Masculino  

Eterno aprendiz

firefox

 

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