Ver Mensaje Individual
  #14 (permalink)  
Antiguo 04/04/2008, 10:50
Avatar de chalchis
chalchis
 
Fecha de Ingreso: julio-2003
Mensajes: 1.773
Antigüedad: 20 años, 9 meses
Puntos: 21
Sonrisa Re: charset en base y al mostrar

hola amigos nuevamente molestanto solo para avisar
que tuve que regresarme desde el principio porque los acentos se guardan mal en mi base de mysql

bueno me di cueta que uso una funcion para capitalizar las palabras en minusculas y desde ahi me arroja los caracteres rarros asi que modifique la rutina ya que en el manual de php indican que el uso de strtolower con acentos puede haber ciertos cambios

bueno asi tenia mi funcíon

function capitalizar($nombre)
{
// aca definimos un array de articulos (en minuscula)
// aunque lo puedes definir afuera y declararlo global aca
$cap_articulos[] = 'a';
$cap_articulos[] = 'de';
$cap_articulos[] = 'del';
$cap_articulos[] = 'la';
$cap_articulos[] = 'los';
$cap_articulos[] = 'las';
$cap_articulos[] = 'y';
// explotamos el nombre
$cap_palabras = explode(' ', $nombre);
// creamos la variable que contendra el nombre
// formateado
$nuevoNombre = '';
// parseamos cada palabra
foreach($cap_palabras as $elemento)
{
// si la palabra es un articulo
if(in_array(trim(strtolower($elemento)), $cap_articulos))
{
// concatenamos seguido de un espacio
$nuevoNombre .= strtolower($elemento)." ";
}
else
{
// sino, es un nombre propio, por lo tanto aplicamos
// las funciones y concatenamos seguido de un espacio
$nuevoNombre .= ucfirst(strtolower($elemento))." ";
}
}
return trim($nuevoNombre);
}


luego la cambien asi:

function capitalizar($nombre)
{
// aca definimos un array de articulos (en minuscula)
// aunque lo puedes definir afuera y declararlo global aca
$outputString = utf8_decode($nombre);
$outputString = strtolower($outputString);
$nombre = utf8_encode($outputString);

$cap_articulos[] = 'a';
$cap_articulos[] = 'de';
$cap_articulos[] = 'del';
$cap_articulos[] = 'la';
$cap_articulos[] = 'los';
$cap_articulos[] = 'las';
$cap_articulos[] = 'y';
// explotamos el nombre
$cap_palabras = explode(' ', $nombre);
// creamos la variable que contendra el nombre
// formateado
$nuevoNombre = '';
// parseamos cada palabra
foreach($cap_palabras as $elemento)
{
// si la palabra es un articulo
//if(in_array(trim(strtolower($elemento)), $cap_articulos))
if(in_array(trim($elemento), $cap_articulos))
{
// concatenamos seguido de un espacio
$nuevoNombre .= $elemento." ";
}
else
{
// sino, es un nombre propio, por lo tanto aplicamos
// las funciones y concatenamos seguido de un espacio
$nuevoNombre .= ucfirst($elemento)." ";
}
}
return trim($nuevoNombre);
}


ahora voy a comprobar si ya puedo guardar bien
en un momento les aviso

saludos
__________________
gerardo