Foros del Web » Programando para Internet » PHP »

me toma la ñ como caracter raro en php

Estas en el tema de me toma la ñ como caracter raro en php en el foro de PHP en Foros del Web. Hola amigos, les cuento tengo un problema con la letra Ñ en php, es decir, en el html tengo esta linea ---------------------------------------------------------------------------------------------------------- <meta http-equiv="Content-Type" content="text/html; ...
  #1 (permalink)  
Antiguo 04/08/2009, 22:56
 
Fecha de Ingreso: diciembre-2007
Mensajes: 385
Antigüedad: 16 años, 11 meses
Puntos: 0
me toma la ñ como caracter raro en php

Hola amigos, les cuento tengo un problema con la letra Ñ en php, es decir, en el html tengo esta linea
----------------------------------------------------------------------------------------------------------
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
----------------------------------------------------------------------------------------------------------
lo q quiere decir q esta en formato utf-8, pero al imprimir la variable de texto q contiene una letra ñ me lo imprime asi:

castaA�os, siendo la palabra correcta castaños y al tener ese valor la letra ñ no me funciona la funcion en la q reemplazo la ñ por la n, ya q no me la toma como ñ sino q me la toma como A�, y en la bd me la ingresa como castaA±os, si tengo mi documento html como utf-8 pq me toma la ñ con ese valor???? q tendria q hacer para q en la variable de texto q contiene la letra ñ me la muestre como tal y no con ese caracter raro para asi poderla reemplazar por n e ingresarla como n en mi bd???....porfavor amigos agradeceria su ayuda.... de antemano gracias.... bye
  #2 (permalink)  
Antiguo 04/08/2009, 23:17
 
Fecha de Ingreso: mayo-2009
Mensajes: 210
Antigüedad: 15 años, 5 meses
Puntos: 0
Respuesta: me toma la ñ como caracter raro en php

yo tmb usaba utf-8 y tenia el mismo problema, luego me pasé a iso-8859-1 y listo. Por qué? No se xD
  #3 (permalink)  
Antiguo 04/08/2009, 23:22
 
Fecha de Ingreso: diciembre-2007
Mensajes: 385
Antigüedad: 16 años, 11 meses
Puntos: 0
Respuesta: me toma la ñ como caracter raro en php

hola, es q mi problema es q estoy trabajando con ajax y ajax solo utiliza/acepta utf-8, por eso no lo he cambiado a iso-8859-1 por eso pregunto como o q debo hacer para lograr q me lo tome como ñ para asi cambiarla a n con la funcion php q tengo y luego insertarla a mi bd.... ojala me puedan ayudar.... de antemano gracias.... bye
  #4 (permalink)  
Antiguo 05/08/2009, 10:43
Avatar de JoseAlejandro_Realza  
Fecha de Ingreso: agosto-2008
Ubicación: Maracay - Venezuela
Mensajes: 192
Antigüedad: 16 años, 3 meses
Puntos: 2
Respuesta: me toma la ñ como caracter raro en php

Podrias Hacer Lo Siguiente, Creas Un Array Con Los Caracteres Que Se Dañan, Y Otro Con Los Correcto Segun El Codigo, Y Le Aplicas A La Palabra La Siguiente Funcion:

Código PHP:
$variable str_replacer($viejas,$nuevas,$palabra
Y Listo. Prueba A Ver, Saludos
__________________
Tu Guía Empresarial http://www.empresarial.org.ve Soluciones Empresariales

Atte: José Alejandro Realza
  #5 (permalink)  
Antiguo 05/08/2009, 11:01
 
Fecha de Ingreso: septiembre-2007
Ubicación: PyRoot
Mensajes: 1.515
Antigüedad: 17 años, 2 meses
Puntos: 188
Respuesta: me toma la ñ como caracter raro en php

hola.

Usa la funcion htmlentities busca en php.net, en los comentarios, coge el codigo del primer comentario e inplementalo en tu script. Es todo saludos!

Saludos!
__________________
Si quieres agradecer el triangulo obscuro de la parte derecha debes presionar +.
  #6 (permalink)  
Antiguo 05/08/2009, 13:32
 
Fecha de Ingreso: diciembre-2007
Mensajes: 385
Antigüedad: 16 años, 11 meses
Puntos: 0
Respuesta: me toma la ñ como caracter raro en php

Hola New, bueno probe el htmlentities, pero no me funciona lo probe asi:
Código PHP:
$_SESSION['nombre_nino']= htmlentities($_POST['nombre_nino']);
    
$_SESSION['apellido_paterno_nino']= htmlentities($_POST['apellido_paterno_nino']);
    
$_SESSION['apellido_materno_nino']= htmlentities($_POST['apellido_materno_nino']); 
y en la consulta estoy insertando asi:

Código PHP:
$INSERT_NINO="INSERT INTO nino (id_nino, nombre_nino, apellido_paterno_nino, apellido_materno_nino) VALUES ('".($_SESSION['ide_nino'])."', '".limpiar_caracteres_especiales($_SESSION['nombre_nino'])."', '".limpiar_caracteres_especiales($_SESSION['apellido_paterno_nino'])."', '".limpiar_caracteres_especiales($_SESSION['apellido_materno_nino'])."') 
pero al imprimir la consulta me imprime en el html por ejemplo en vez de imprimirme ormeño me imprime ormeño y en la bd me lo inserta como orme&Atilde;&plusmn;o en q estoy fallando al utilizar htmlentities???? o como deberia hacerlo para q me muestre la ñ en el html para luego reemplazarla por n y luego insertarla a mi bd??? porfavor amigos ruego su ayuda!!!!.... de antemano gracias.... bye
  #7 (permalink)  
Antiguo 05/08/2009, 21:45
 
Fecha de Ingreso: septiembre-2007
Ubicación: PyRoot
Mensajes: 1.515
Antigüedad: 17 años, 2 meses
Puntos: 188
Respuesta: me toma la ñ como caracter raro en php

Hola amigo, la funcion entities correctamente es esta:

SAludos!

Código PHP:
<?php

    
//simple task: convert everything from utf-8 into an NCR[numeric character reference]
    
class unicode_replace_entities {
        public function 
UTF8entities($content="") {
            
$contents $this->unicode_string_to_array($content);
            
$swap "";
            
$iCount count($contents);
            for (
$o=0;$o<$iCount;$o++) {
                
$contents[$o] = $this->unicode_entity_replace($contents[$o]);
                
$swap .= $contents[$o];
            }
            return 
mb_convert_encoding($swap,"UTF-8"); //not really necessary, but why not.
        
}

        public function 
unicode_string_to_array$string ) { //adjwilli
            
$strlen mb_strlen($string);
            while (
$strlen) {
                
$array[] = mb_substr$string01"UTF-8" );
                
$string mb_substr$string1$strlen"UTF-8" );
                
$strlen mb_strlen$string );
            }
            return 
$array;
        }

        public function 
unicode_entity_replace($c) { //m. perez
            
$h ord($c{0});   
            if (
$h <= 0x7F) {
                return 
$c;
            } else if (
$h 0xC2) {
                return 
$c;
            }
           
            if (
$h <= 0xDF) {
                
$h = ($h 0x1F) << | (ord($c{1}) & 0x3F);
                
$h "&#" $h ";";
                return 
$h;
            } else if (
$h <= 0xEF) {
                
$h = ($h 0x0F) << 12 | (ord($c{1}) & 0x3F) << | (ord($c{2}) & 0x3F);
                
$h "&#" $h ";";
                return 
$h;
            } else if (
$h <= 0xF4) {
                
$h = ($h 0x0F) << 18 | (ord($c{1}) & 0x3F) << 12 | (ord($c{2}) & 0x3F) << | (ord($c{3}) & 0x3F);
                
$h "&#" $h ";";
                return 
$h;
            }
        }
    }
//
   
    //utf-8 environment   
    //utf-8 environment   
    
$content $_POST['texto'];

    
$oUnicodeReplace = new unicode_replace_entities();
    
$content $oUnicodeReplace->UTF8entities($content);
?>

Saludos.
__________________
Si quieres agradecer el triangulo obscuro de la parte derecha debes presionar +.
  #8 (permalink)  
Antiguo 06/08/2009, 00:12
Avatar de JoseTejada  
Fecha de Ingreso: diciembre-2007
Ubicación: Peru.Lima.Cercado.MDuarez.Granaderos172
Mensajes: 218
Antigüedad: 16 años, 11 meses
Puntos: 11
Respuesta: me toma la ñ como caracter raro en php

Ehmmm, no c si esto ayude, pero hace un tiempo tuve un problema similar y usé una función de PHP llamada utf8_encode() y hay otra utf8_decode(); la que usé fue la primera, espero esto ayude, bye
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 22:12.