Foros del Web » Programando para Internet » PHP »

Caracteres especiales

Estas en el tema de Caracteres especiales en el foro de PHP en Foros del Web. Tengo un script php a donde recibo post en la variable apellido - el valor - Acuña echo $_POST['apellido']; aca me lo muestra ok. le ...
  #1 (permalink)  
Antiguo 13/06/2010, 12:56
 
Fecha de Ingreso: julio-2009
Mensajes: 53
Antigüedad: 14 años, 8 meses
Puntos: 0
Caracteres especiales

Tengo un script php a donde recibo post en la variable apellido - el valor - Acuña

echo $_POST['apellido'];

aca me lo muestra ok. le hago esto de abajo.

$l_ape=ucwords(strtolower($_POST["apellido"]));

echo "de php, despues de ucwords -> ".$l_ape;

y aca me muestra Acu�a

Que puede ser ?

Gracias
  #2 (permalink)  
Antiguo 13/06/2010, 13:06
rpv
 
Fecha de Ingreso: febrero-2010
Mensajes: 275
Antigüedad: 14 años, 2 meses
Puntos: 10
Respuesta: Caracteres especiales

si trabajas con utf-8 se sugiere que uses esta función: mb_convert_case
  #3 (permalink)  
Antiguo 13/06/2010, 15:26
Avatar de wiwi74  
Fecha de Ingreso: marzo-2008
Mensajes: 515
Antigüedad: 16 años, 1 mes
Puntos: 10
Respuesta: Caracteres especiales

Prueba esto:

Código PHP:

$l_ape
=ucwords(strtolower($_POST["apellido"]));

echo 
utf8_encode ($l_ape);

//aplica esta funcion [ utf8_encode() ]  en distintas partes para ir probando. 
  #4 (permalink)  
Antiguo 13/06/2010, 17:22
 
Fecha de Ingreso: julio-2009
Mensajes: 53
Antigüedad: 14 años, 8 meses
Puntos: 0
Respuesta: Caracteres especiales

Gracias rpv, me funcionó tu solución ademas use las dos caracteristicas como se ven para pasar todo a minusculas y seguido a esto la primera en mayusculas

$l_ape = mb_convert_case($l_ape, MB_CASE_LOWER, "UTF-8");

$l_ape = mb_convert_case($l_ape, MB_CASE_TITLE, "UTF-8");

la de wiwi74 no anduvo.

No me convence que tenga que ser tan enquilombado pero bue, que se le vamos a hacer.
Mil Gracias.
  #5 (permalink)  
Antiguo 13/06/2010, 18:06
 
Fecha de Ingreso: julio-2009
Mensajes: 53
Antigüedad: 14 años, 8 meses
Puntos: 0
Respuesta: Caracteres especiales

Bueno ahora anduvo barbaro pero cuando se graba en mysql, se graba con unos codigos raros, que hago, no le llevo el apunte ?

Gracias
  #6 (permalink)  
Antiguo 14/06/2010, 17:29
 
Fecha de Ingreso: julio-2009
Mensajes: 53
Antigüedad: 14 años, 8 meses
Puntos: 0
Respuesta: Caracteres especiales

Bueno gracias a los dos llegue a la solución, no usando encode sino decode lo aclaro por si le sirve a alguien. La linea de codigo quedó así. para los casos que se escriba por ejemplo ACuña devuelve Acuña

$apellido = utf8_decode(mb_convert_case((mb_convert_case($_POS T['apellido'], MB_CASE_LOWER, "UTF-8")), MB_CASE_TITLE, "UTF-8"));

Luego de renegar un rato resultó que no funcionaba bien con

ucwords y strtolower y se solucionó con -- > mb_convert_case pero cuando grababa en mysql seguia el problema y se solucionó con --> utf8_decode

Saludos
  #7 (permalink)  
Antiguo 14/06/2010, 19:19
rpv
 
Fecha de Ingreso: febrero-2010
Mensajes: 275
Antigüedad: 14 años, 2 meses
Puntos: 10
Respuesta: Caracteres especiales

significa que tu db está usando una codificación de caracteres distinta, posiblemente latin1, como sugerencia.... evita este tipo de conversiones y haz que php y mysql `hablen` en el mismo lenguaje, convierte tu db a utf8.
  #8 (permalink)  
Antiguo 16/06/2010, 07:04
 
Fecha de Ingreso: julio-2009
Mensajes: 53
Antigüedad: 14 años, 8 meses
Puntos: 0
Respuesta: Caracteres especiales

Si me parece medio rebuscado, no se que hacer, no me gusta mucho pero por ahora anda así, hasta que encuentre que lo que esta molestando, No se que pensar me fije en la base de datos, y esta todo en utf8_unicode_ci.
Gracias rpv
  #9 (permalink)  
Antiguo 16/06/2010, 09:16
rpv
 
Fecha de Ingreso: febrero-2010
Mensajes: 275
Antigüedad: 14 años, 2 meses
Puntos: 10
Respuesta: Caracteres especiales

Si ya tienes tu DB en utf8 entonces es problema del charset default de MySQL, ejecuta esta QUERY, justo después de conectar (mysql_connect) y seleccionar tu DB (mysql_select_db):

Código PHP:
Ver original
  1. mysql_query('SET NAMES \'utf8\'');

Con eso ya no debería hacerte falta usar las funciones utf8_encode/utf8_decode
  #10 (permalink)  
Antiguo 16/06/2010, 19:05
 
Fecha de Ingreso: julio-2009
Mensajes: 53
Antigüedad: 14 años, 8 meses
Puntos: 0
Respuesta: Caracteres especiales

Muchas gracias rpv, funciona correctamente.

Última edición por juan1963; 16/06/2010 a las 19:23

Etiquetas: caracteres, especiales
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 03:42.