Foros del Web » Programando para Internet » PHP »

[SOLUCIONADO] Problema con acentos y ñ php

Estas en el tema de Problema con acentos y ñ php en el foro de PHP en Foros del Web. el problema es que al enviar los datos cuando los graba si encuentra un acento o una ñ se cortan los datos y solo graba ...
  #1 (permalink)  
Antiguo 26/04/2014, 14:26
 
Fecha de Ingreso: abril-2014
Ubicación: mexico
Mensajes: 6
Antigüedad: 10 años
Puntos: 0
Exclamación Problema con acentos y ñ php

el problema es que al enviar los datos cuando los graba si encuentra un acento o una ñ se cortan los datos y solo graba hasta donde vio un acento

osease que si pongo: esta mañana es brillante
solo graba en mysql: esta ma

y ya no pone lo demas

que puedo hacer?

Código PHP:
<?php
header
("Content-Type: text/html;charset=utf-8");

$usu $_POST['usuario'];
$img $_POST['img'];
$ti $_POST['titulo'];
$deco $_POST['deco'];
$dec $_POST['edited'];
$typ $_POST['tipo'];
$back $_POST['url'];
if (
$usu==""|$typ==""|$ti==""|$deco==""|$dec=="")
{
echo 
"<script languaje='javascript'>
    alert('Debes ingresar todos los datos solicitados para postear.');
    window.history.back()
   </script>"
;
}
else
{
 
$conexion mysql_connect("mysql.hostinger.mx","u527322371_lamd","lamd_16");
 
mysql_select_db("u527322371_gral"$conexion);
 if(!
mysql_query("INSERT INTO Posts(usuario,titulo,desco,descripcion,imagen,tipo) values ('".$usu."','".$ti."','".$deco."','".$dec."','".$img."','".$typ."')"));
echo 
'<br>Si no te redireccionamos <a href="http://ludwingamd.url.ph/Posts/New/Exito/">click aqui</a>';
header('Location: http://ludwingamd.url.ph/Posts/New/Exito/');}
?>
  #2 (permalink)  
Antiguo 26/04/2014, 22:36
 
Fecha de Ingreso: enero-2010
Mensajes: 63
Antigüedad: 14 años, 3 meses
Puntos: 5
Respuesta: Problema con acentos y ñ php

Esto puede suceder ya que el juego de caracteres de la base de datos no es igual al de tu pagina.

Debes identificar el juego de caracteres tanto de la base de datos como el de la pagina y posteriormente usar la funcion iconv() de PHP que convierte el juego de caracteres de una cadena de texto:

Código PHP:
Ver original
  1. iconv("UTF-8", "ISO-8859-1", $text) // parámetros : formato_origen, formato_destino, cadena_a_convertir
  #3 (permalink)  
Antiguo 26/04/2014, 22:45
 
Fecha de Ingreso: abril-2014
Ubicación: mexico
Mensajes: 6
Antigüedad: 10 años
Puntos: 0
Respuesta: Problema con acentos y ñ php

Y esa linea de código en que parte de mi código la pongo? la pongo?

Y la variable text la cambio por la variable del campo de texto?
  #4 (permalink)  
Antiguo 26/04/2014, 23:21
 
Fecha de Ingreso: enero-2010
Mensajes: 63
Antigüedad: 14 años, 3 meses
Puntos: 5
Respuesta: Problema con acentos y ñ php

Debes usar la funcion iconv() con cada una de las variables después de capturarlas, por ejemplo así:

Código PHP:
Ver original
  1. $usu = $_POST['usuario'];
  2. $usu = iconv("UTF-8", "ISO-8859-1", $usu)

Pero recuerda que debes conocer el juego de caracteres de la base de datos, para el ejemplo anterior estoy suponiendo que es "ISO-8859-1".

que motor de base de datos usas? oracle, mysql?
  #5 (permalink)  
Antiguo 26/04/2014, 23:38
 
Fecha de Ingreso: abril-2014
Ubicación: mexico
Mensajes: 6
Antigüedad: 10 años
Puntos: 0
Respuesta: Problema con acentos y ñ php

Es MySQL
Y utf8_ unicode_ ci
  #6 (permalink)  
Antiguo 27/04/2014, 00:08
 
Fecha de Ingreso: enero-2010
Mensajes: 63
Antigüedad: 14 años, 3 meses
Puntos: 5
Respuesta: Problema con acentos y ñ php

Según tu código con el header al principio el juego de caracteres de la pagina es utf-8 entonces no debería haber problema, pero para detectar la codificación de una cadena usa esta función:

Código PHP:
Ver original
  1. echo mb_detect_encoding($usu);

Otra posible solución es mirar si puedes insertar los caracteres especiales reemplazándolos por el código equivalente de html:
ñ = &ntilde;
á = &aacute;
é = &eacute;
í = &iacute;
ó = &oacute;
ú = &uacute;

Si te resulta bien la prueba, entonces debes usar una función PHP para reemplazar los caracteres en tu cadena de texto, por ejemplo algo así:

Código PHP:
Ver original
  1. $usu = $_POST['usuario'];
  2. //función que busca todas las "ñ" en la cadena $usu y las reemplaza por "&ntilde;"
  3. $usu = str_replace("ñ","&ntilde;",$usu);

espero sirva alguna de esas posibles soluciones, o sino avisas para seguir mirando.

Etiquetas: Ninguno
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 07:25.