Foros del Web » Programando para Internet » PHP »

Problema al obtener caracteres de un string

Estas en el tema de Problema al obtener caracteres de un string en el foro de PHP en Foros del Web. Hola a todos, tengo un problema con el siguiente código para generar una cadena aleatoria: Código PHP:       $patron  =  "1234567890abcdefghijklmnñopqrstuvwxyz" ;          for (  $i = ...
  #1 (permalink)  
Antiguo 17/05/2012, 15:40
 
Fecha de Ingreso: mayo-2012
Mensajes: 23
Antigüedad: 11 años, 11 meses
Puntos: 4
Problema al obtener caracteres de un string

Hola a todos,
tengo un problema con el siguiente código para generar una cadena aleatoria:

Código PHP:

      $patron 
"1234567890abcdefghijklmnñopqrstuvwxyz";
    
    for ( 
$i=0$i<15$i++) {
        
$key .= $patron[rand(0,35)];    
    }
    
    echo 
$key
Me aparece el conocido caracter "�" donde deberia ir una ñ.
En apache y php el charset default lo tengo en UTF-8.
El archivo .php también tiene codificacion UTF-8.

Si imprimo $patron la ñ se muestra correctamente.

Se que hay otras formas de hacer cadenas aleatorias pero quiero solucionar este problema.

¿Alguna solución?


Saludos y gracias
  #2 (permalink)  
Antiguo 17/05/2012, 15:48
Avatar de enlinea777  
Fecha de Ingreso: mayo-2008
Ubicación: frente al pc
Mensajes: 1.830
Antigüedad: 15 años, 11 meses
Puntos: 127
Respuesta: Problema al obtener caracteres de un string

esta es la solucion

Código PHP:
      $patron "1234567890abcdefghijklmnopqrstuvwxyz";
    
    for ( 
$i=0$i<15$i++) {
        
$key .= $patron[rand(0,35)];    
    }
    
    echo 
$key

otracosa seria revisar el formato del archivo si estas guardando como win o unix
  #3 (permalink)  
Antiguo 17/05/2012, 15:59
 
Fecha de Ingreso: mayo-2012
Mensajes: 23
Antigüedad: 11 años, 11 meses
Puntos: 4
Respuesta: Problema al obtener caracteres de un string

Me exprese mal. Quiero saber el origen del problema. Las letras con tilde tampoco se ven.

Cita:
otracosa seria revisar el formato del archivo si estas guardando como win o unix
¿Como puedo saber eso?

Entiendo que es algun problema con la codificación pero, si apache y php lo configure para utf-8 y en dreamweaver la codificacion predeterminada es utf-8, no entiendo porque no me muestra los caracteres correctamente.


Gracias

Saludos
  #4 (permalink)  
Antiguo 17/05/2012, 16:15
Avatar de stramin  
Fecha de Ingreso: marzo-2008
Ubicación: Cubil felino
Mensajes: 1.652
Antigüedad: 16 años, 1 mes
Puntos: 336
Respuesta: Problema al obtener caracteres de un string

Te ofrezco una solución para generar 5 letras aleatorias:

function chars5(){ return base_convert(rand((int)base_convert("10000",36,10) ,(int)base_convert("zzzzz",36,10)),10,36); }

De esta forma puedes generar un número de 15 letras aleatoria llamando esa funcion 3 veces:

echo chars5().chars5().chars5();

y te queda mucho más corto
__________________
El objetivo de este foro es orientar al usuario como un favor y no como una obligación.

Yo soy de los que dan puntos por aporte :D
  #5 (permalink)  
Antiguo 17/05/2012, 16:39
Avatar de jotaincubus  
Fecha de Ingreso: mayo-2005
Ubicación: Medellin - Colombia
Mensajes: 1.797
Antigüedad: 18 años, 11 meses
Puntos: 394
Respuesta: Problema al obtener caracteres de un string

Tal ves sea problema de BOM verifica esto a ver si es lo que esta sucediendo.
__________________
Por que existe gente que no agradece después de que se le ha brindado tiempo y ayuda ???
  #6 (permalink)  
Antiguo 18/05/2012, 03:09
 
Fecha de Ingreso: mayo-2012
Mensajes: 23
Antigüedad: 11 años, 11 meses
Puntos: 4
Respuesta: Problema al obtener caracteres de un string

Cita:
Iniciado por stramin Ver Mensaje
Te ofrezco una solución para generar 5 letras aleatorias:

function chars5(){ return base_convert(rand((int)base_convert("10000",36,10) ,(int)base_convert("zzzzz",36,10)),10,36); }

De esta forma puedes generar un número de 15 letras aleatoria llamando esa funcion 3 veces:

echo chars5().chars5().chars5();

y te queda mucho más corto

Me la apunto. Muchas gracias


Cita:
Tal ves sea problema de BOM verifica esto a ver si es lo que esta sucediendo.
En dreamweaver tengo desactivada la opción "Incluir firma Unicode(BOM)".

Lo he probado en otro ordenador y me pasa lo mismo...

Gracias por responder

Saludos
  #7 (permalink)  
Antiguo 19/05/2012, 10:56
 
Fecha de Ingreso: mayo-2012
Mensajes: 23
Antigüedad: 11 años, 11 meses
Puntos: 4
Respuesta: Problema al obtener caracteres de un string

¿Nadie sabe porque sucede esto?
Subo el tema a ver si alguien sabe.. ya no molesto más xD

Saludos
  #8 (permalink)  
Antiguo 19/05/2012, 11:09
Avatar de enlinea777  
Fecha de Ingreso: mayo-2008
Ubicación: frente al pc
Mensajes: 1.830
Antigüedad: 15 años, 11 meses
Puntos: 127
Respuesta: Problema al obtener caracteres de un string

es la codificacion de php, del archivo en si.
por defecto es utf8 asi deveria de verse en dreamweaver



pero en windows dreamweaver guarda por defecto los archivos en iso o latino.

lo que hay que hacer es estandaridar el area de trabajo para no caer en ese error.

esta aseria tu solucion

utf8_encode() o urf_decode()

usa esto en el echo y veras que funciona vien
Código PHP:
    $patron "1234567890abcdefghijklmnñopqrstuvwxyz";
    
    for ( 
$i=0$i<15$i++) {
        
$key .= $patron[rand(0,35)];    
    }
    
    echo 
utf8_encode($key); 
    echo 
utf8_decode($key); 
listo con eso solo escoje el que funcione ok.
  #9 (permalink)  
Antiguo 19/05/2012, 11:54
 
Fecha de Ingreso: mayo-2012
Mensajes: 23
Antigüedad: 11 años, 11 meses
Puntos: 4
Respuesta: Problema al obtener caracteres de un string

Muchas gracias por la ayuda y por tu tiempo :)

La codificación en dreamweaver la tengo igual que la imagen... pero sigue sin verse la ñ. Probé esto:
Código PHP:
    $patron "1234567890abcdefghijklmnñopqrstuvwxyz";
 
     echo 
"ñ <br/>";
 
    echo 
$patron["24"]. " <br/>";
    
    echo 
utf8_encode($patron["24"]) . " <br/> ";
    
    echo 
utf8_decode($patron["24"]) . " <br/> "
y en el navegador muestra esto:
Cita:
ñ

Ã
?
Por lo que se ve cuando no uso ninguna función de PHP es cuando se muestra la ñ correctamente pero sigo sin saber por que... :S

Gracias de nuevo

Saludos
  #10 (permalink)  
Antiguo 19/05/2012, 12:37
Avatar de enlinea777  
Fecha de Ingreso: mayo-2008
Ubicación: frente al pc
Mensajes: 1.830
Antigüedad: 15 años, 11 meses
Puntos: 127
Busqueda Respuesta: Problema al obtener caracteres de un string

cual es tu entorno de desarrollo?
windows, mac, linux,etc...
bloc de notas, dreamwever,gedit,etc...

echa un vistaso a esto AddDefaultCharset Directiva asi puedes poner los formatos de caraceres por defecto

tambien podrias revisar en tu php.ini la opcion default_charset en windows o en el wamp server encuentro esto default_charset = "iso-8859-1" quiza podria servir poner esto default_charset = "utf-8"

espero que con esto soluciones esos inconvenientes que se le pasan a los gringos
  #11 (permalink)  
Antiguo 19/05/2012, 14:19
 
Fecha de Ingreso: mayo-2012
Mensajes: 23
Antigüedad: 11 años, 11 meses
Puntos: 4
Respuesta: Problema al obtener caracteres de un string

He probado en Windows XP y Windows 7, Dreamweaver y bloc de notas, XAMPP y AppServ...

En apache tengo
Cita:
AddDefaultCharset utf-8
también probé poniendolo en on y en off pero nada.

En php.ini
Cita:
default_charset = "utf-8"
No entiendo que puede estar pasando...

¿Tu al ejecutar ese código ves correctamente las ñ?


Gracias

Saludos
  #12 (permalink)  
Antiguo 19/05/2012, 15:09
Avatar de enlinea777  
Fecha de Ingreso: mayo-2008
Ubicación: frente al pc
Mensajes: 1.830
Antigüedad: 15 años, 11 meses
Puntos: 127
Respuesta: Problema al obtener caracteres de un string

pues esta es la respuesta http://creaelicita.cl/ayuda/r535

Código PHP:
<?
      $patron 
utf8_decode('1234567890abcdefghijklmnñopqrstuvwxyz');
    
    for ( 
$i=0$i<15$i++) {
        
$key .= $patron[rand(0,35)];    
    }
    
    echo 
$key;
?>
  #13 (permalink)  
Antiguo 19/05/2012, 15:46
 
Fecha de Ingreso: mayo-2012
Mensajes: 23
Antigüedad: 11 años, 11 meses
Puntos: 4
Respuesta: Problema al obtener caracteres de un string

Vale esto si que es raro..
En Chrome e Internet Explorer veo las ñ correctamente en la url que me pasaste.
Pero en Firefox se sigue viendo mal y tengo la codificacion de caracteres predeterminada en Unicode(UTF-8).

Y en mi servidor local sigo sin poder ver la ñ en ningún navegador.

Con la extension LiveHTTPHeaders de Firefox comparé las cabeceras de la url que me dijistes y la de mi pagina en localhost y la diferencia es que en la tuya dice
Cita:
Content-Type: text/html
mientras que en la mia
Cita:
Content-Type: text/html charset=utf-8
Me estoy dando por vencido..


Muchas gracias de nuevo


Saludos
  #14 (permalink)  
Antiguo 20/05/2012, 16:59
 
Fecha de Ingreso: mayo-2012
Mensajes: 23
Antigüedad: 11 años, 11 meses
Puntos: 4
Respuesta: Problema al obtener caracteres de un string

Hoy volví a probar el link que me pasaste y ya veo las eñes en firefox. Habrá sido un problema con la caché...

Pero me seguia sin funcionar en localhost hasta que me dio por probar esto:

Código PHP:
<?php
      $patron 
utf8_decode('1234567890abcdefghijklmnñopqrstuvwxyz');
    
    for ( 
$i=0$i<15$i++) {
        
$key .= utf8_encode($patron[rand(0,35)]);    
    }
    
    echo 
$key;
?>
y funcionó!


Muchas gracias enlinea777, sin tu ayuda no lo hubiera conseguido.



Saludos

Etiquetas: caracteres, string
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 21:45.