Comunidad de diseño web y desarrollo en internet online

Problemas con acentos en php

Citar            
MensajeEscrito el 16 Dic 2009 04:38 am
Hola, tengo algun problema con esos caracteres extraños al recuperarlos de mysql.
Al problema principal ya lo supere, en realidad: puedo mostrar el nombre original (de una imagen) guardando en DB el nombre original y un nombre aleatoreo para la consulta (con caracteres normales -tipico-).
Lo que sucede es que a la hora de poner en MAYUSCULA (del nombre original) el prpimer caracter con ucfirst() me muestra el tipico cuadradito.
Lo mismo me ocurre cuando hago esto con un simple string:

Código PHP :

 $the_string = "ágape";
//esto, como saben, me mostraria el primer caracter
echo $the_string{0};

Me muestra este odioso: �
O la odiosa: Ã si uso utf8_encode()

En fin, La idea seria convertir el primer caracter a mayuscula, siendo este ACENTUADO.


Ya probe con esto:

Código PHP :

$lower_char=array("á","é","í","ó","ú","ä","ë","ï","ö","ü","à","è","ì","ò","ù","â","ê","î","ô","û","ñ");
$upper_char=array("Á","É","Í","Ó","Ú","Ä","Ë","Ï","Ö","Ü","À","È","Ì","Ò","Ù","Â","Ê","Î","Ô","Û","Ñ");


Pero al querer manipular el string asi:

Código PHP :

//convertir a mayuscula el primer caracter especial del string
$char_ini=str_replace($lower_char,$upper_char,substr($this_sub_char,0,1));
//convertir a minuscula los restantes caracteres especiales del string
$char_rest=str_replace($upper_char,$lower_char,substr($this_sub_char,1));


Un pequeño ejemplo:
http://75.127.104.17/~wiwi74/pedido_pizzas/realizaPedidos/pedido.php

Bueno espero que se me entienda.

Por wiwi74

1 de clabLevel



 

msie7
Citar            
MensajeEscrito el 16 Dic 2009 05:29 am

Por Inyaka

Claber

3176 de clabLevel

9 tutoriales
2 articulos

Genero:Masculino   Desarrollador de GAIA

Programador y fotógrafo

firefox
Citar            
MensajeEscrito el 16 Dic 2009 07:18 pm
Gracias [ htmlentities($the_string ,ENT_QUOTES,'UTF-8'); ] me sirvio.

Asi lo utilice
( Luego, lo ideal seria recorrer la cadena con un loop para tratar individualmente a cada palabra )
De momento, asi funciona.

Código PHP :

$the_string="áeiou Áeiou Aeiou ÁÉÍÓÚ Ññ";

$the_string = htmlentities($the_string ,ENT_QUOTES,'UTF-8');

$lower_char=array("á","é","í","ó","ú","ñ");
$upper_char=array("Á","É","Í","Ó","Ú","Ñ");


//convertir a mayuscula el primer caracter especial del string
$char_ini=str_replace($lower_char,$upper_char,substr($the_string,0,ocho)); //poner el numero en lugar de "ocho"
//convertir a minuscula los restantes caracteres especiales del string
$char_rest=str_replace($upper_char,$lower_char,substr($the_string,ocho)); //poner el numero en lugar de "ocho"


  //mostramos los resultados concatenados
 //y, por si queda algun caracter NORMAL en mayuscula 
//lo ponemos en minuscula con strtolower()
echo $char_ini.strtolower($char_rest)." ";

Por wiwi74

1 de clabLevel



 

msie7
Citar            
MensajeEscrito el 08 Ene 2010 11:28 am
¿Por qué no conviertes los caracteres antes de pasar la cadena a htmlentities? ¿Conoces la función strtr?

$cadenanueva = strtr("conviÉrtete yÁ coraÇao!", "ÁÉÍÓÚÇ", "áéíóúç");
Resultado: conviértete yá coraçao!

Por carmarri

3 de clabLevel



 

firefox
Citar            
MensajeEscrito el 08 Ene 2010 05:05 pm
puedes tambien mirar la codificacion UTF que esta generando tu DB y corregirla con un tag XML en tu pagina

Por jpcw

Claber

1715 de clabLevel

1 tutorial

Genero:Masculino  

AlgoritmicBrainDesigner

firefox
Citar            
MensajeEscrito el 09 Ene 2010 01:43 am
Cuando se trabaja con caracteres literales (escrito a mano) es una cosa; cuando se recupera de db es diferente. Las cosas alli se complican mas.

Por ejemplo:

strtr("ñoÑo", "ñÑ", "Ññ");
No presenta mayor problema.

Pero si ñoÑo viniese de db se complica un poco. Ese era mi problema.
(Digamos, las funciones php fallan internamente al recibir de db.)

..Pero ya lo resolvi (cree mi propia funcion replace_str -al reves-).

Ya me habia olvidado de esto, ahora reniego con otra cosa.


Saludos y gracias.

Por wiwi74

1 de clabLevel



 

msie7

 

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