Foros del Web » Programando para Internet » PHP »

¿por que ord('ñ'); devuelve 195, que es "Línea vertical con empalme gráfico" ???

Estas en el tema de ¿por que ord('ñ'); devuelve 195, que es "Línea vertical con empalme gráfico" ??? en el foro de PHP en Foros del Web. Hola. El primero me retorna 195, el segundo el caracter {Ã}: Código PHP: echo  ord ( 'ñ' ); echo  "\n" ; echo  iconv ( 'iso-8859-1' ...
  #1 (permalink)  
Antiguo 21/01/2013, 09:46
 
Fecha de Ingreso: febrero-2004
Mensajes: 1.987
Antigüedad: 20 años, 2 meses
Puntos: 22
¿por que ord('ñ'); devuelve 195, que es "Línea vertical con empalme gráfico" ???

Hola.

El primero me retorna 195, el segundo el caracter {Ã}:

Código PHP:
echo ord('ñ');
echo 
"\n";
echo 
iconv('iso-8859-1','utf-8',chr(195));
echo 
chr(195); 
Al parecer debería retornar 164, pero si corro
Código PHP:
echo iconv('iso-8859-1','utf-8',chr(164));
echo 
chr(164); 
me imprime otra cosa.

cómo puedo obtener los valores correctos?

Gracias
  #2 (permalink)  
Antiguo 21/01/2013, 09:58
 
Fecha de Ingreso: febrero-2004
Mensajes: 1.987
Antigüedad: 20 años, 2 meses
Puntos: 22
Respuesta: ¿por que ord('ñ'); devuelve 195, que es "Línea vertical con empalme gráfic

Mi PHP estará loco?
O tengo un virus??

Al hacer
Código PHP:
echo htmlentities('ééééé'); 
me imprime:

Código:
ééééé
  #3 (permalink)  
Antiguo 21/01/2013, 10:05
Avatar de abimaelrc
Colaborador
 
Fecha de Ingreso: mayo-2009
Ubicación: En el planeta de Puerto Rico
Mensajes: 14.734
Antigüedad: 14 años, 11 meses
Puntos: 1517
Respuesta: ¿por que ord('ñ'); devuelve 195, que es "Línea vertical con empalme gráfic

PHP actúa correctamente. Es más bien desconocimiento. Lo que sucede es que tu archivo está trabajando con una codificación diferente a la que está convirtiendo htmlentities, como no le estás indicando la codificación que debe usar htmlentities por defecto a versiones anteriores a 5.4 es ISO-8859-1 y versiones más recientes a la 5.4 es UTF-8, si indicas la codificación que estás usando, va a funcionar como tu quieres que haga.
__________________
Verifica antes de preguntar.
Los verdaderos amigos se hieren con la verdad, para no perderlos con la mentira. - Eugenio Maria de Hostos
  #4 (permalink)  
Antiguo 21/01/2013, 10:06
 
Fecha de Ingreso: febrero-2004
Mensajes: 1.987
Antigüedad: 20 años, 2 meses
Puntos: 22
Respuesta: ¿por que ord('ñ'); devuelve 195, que es "Línea vertical con empalme gráfic

Cita:
Iniciado por Anarko Ver Mensaje
Mi PHP estará loco?
O tengo un virus??
Tu versión de PHP exige mas parámetros para retornar valores "idóneos":
Código PHP:
echo htmlentities('ééééé',ENT_QUOTES,'UTF-8'); 
Así obtendras:
Código:
ééééé
Sobre el problema original: "¿por que ord('ñ'); devuelve 195", ¿alguna idea?
  #5 (permalink)  
Antiguo 21/01/2013, 10:08
Avatar de abimaelrc
Colaborador
 
Fecha de Ingreso: mayo-2009
Ubicación: En el planeta de Puerto Rico
Mensajes: 14.734
Antigüedad: 14 años, 11 meses
Puntos: 1517
Respuesta: ¿por que ord('ñ'); devuelve 195, que es "Línea vertical con empalme gráfic

Cita:
Iniciado por Anarko Ver Mensaje
Tu versión de PHP exige mas parámetros para retornar valores "idóneos":
¿Esto es un monologo?
__________________
Verifica antes de preguntar.
Los verdaderos amigos se hieren con la verdad, para no perderlos con la mentira. - Eugenio Maria de Hostos
  #6 (permalink)  
Antiguo 21/01/2013, 10:10
Avatar de abimaelrc
Colaborador
 
Fecha de Ingreso: mayo-2009
Ubicación: En el planeta de Puerto Rico
Mensajes: 14.734
Antigüedad: 14 años, 11 meses
Puntos: 1517
Respuesta: ¿por que ord('ñ'); devuelve 195, que es "Línea vertical con empalme gráfic

Porque ord trabaja solamente con ASCII, no con utf8
__________________
Verifica antes de preguntar.
Los verdaderos amigos se hieren con la verdad, para no perderlos con la mentira. - Eugenio Maria de Hostos
  #7 (permalink)  
Antiguo 21/01/2013, 10:12
 
Fecha de Ingreso: febrero-2004
Mensajes: 1.987
Antigüedad: 20 años, 2 meses
Puntos: 22
Respuesta: ¿por que ord('ñ'); devuelve 195, que es "Línea vertical con empalme gráfic

Cita:
Iniciado por abimaelrc Ver Mensaje
¿Esto es un monologo?
Jaja...
Grácias por tu ayuda Abimael.

Ayudame para obtener la salida correcta por favor; (164).


O no se puede?
  #8 (permalink)  
Antiguo 21/01/2013, 10:13
Avatar de abimaelrc
Colaborador
 
Fecha de Ingreso: mayo-2009
Ubicación: En el planeta de Puerto Rico
Mensajes: 14.734
Antigüedad: 14 años, 11 meses
Puntos: 1517
Respuesta: ¿por que ord('ñ'); devuelve 195, que es "Línea vertical con empalme gráfic

En los comentarios del manual oficial hay mucha información de como obtener lo que deseas. Verificalos te va ayudar mucho.
__________________
Verifica antes de preguntar.
Los verdaderos amigos se hieren con la verdad, para no perderlos con la mentira. - Eugenio Maria de Hostos
  #9 (permalink)  
Antiguo 21/01/2013, 10:17
 
Fecha de Ingreso: febrero-2004
Mensajes: 1.987
Antigüedad: 20 años, 2 meses
Puntos: 22
Respuesta: ¿por que ord('ñ'); devuelve 195, que es "Línea vertical con empalme gráfic

Cita:
Iniciado por abimaelrc Ver Mensaje
En los comentarios del manual oficial hay mucha información de como obtener lo que deseas.
Abimael hacer

echo ord('ñ');

no es UTF-8

Lo que deseo es saber ¿que sucede aqui?
  #10 (permalink)  
Antiguo 21/01/2013, 10:25
Avatar de abimaelrc
Colaborador
 
Fecha de Ingreso: mayo-2009
Ubicación: En el planeta de Puerto Rico
Mensajes: 14.734
Antigüedad: 14 años, 11 meses
Puntos: 1517
Respuesta: ¿por que ord('ñ'); devuelve 195, que es "Línea vertical con empalme gráfic

En la documentación dice
Cita:
Returns the ASCII value as an integer.
Si en el ASCII la ñ es el 195, entonces es la que te va a mostrar.
__________________
Verifica antes de preguntar.
Los verdaderos amigos se hieren con la verdad, para no perderlos con la mentira. - Eugenio Maria de Hostos
  #11 (permalink)  
Antiguo 21/01/2013, 10:29
 
Fecha de Ingreso: febrero-2004
Mensajes: 1.987
Antigüedad: 20 años, 2 meses
Puntos: 22
Respuesta: ¿por que ord('ñ'); devuelve 195, que es "Línea vertical con empalme gráfic

Cita:
Iniciado por abimaelrc Ver Mensaje
En la documentación dice

Si en el ASCII la ñ es el 195, entonces es la que te va a mostrar.
Gracias Abim. Justamente!, en ASCII no es la 195, es 164.
  #12 (permalink)  
Antiguo 21/01/2013, 10:45
Avatar de abimaelrc
Colaborador
 
Fecha de Ingreso: mayo-2009
Ubicación: En el planeta de Puerto Rico
Mensajes: 14.734
Antigüedad: 14 años, 11 meses
Puntos: 1517
Respuesta: ¿por que ord('ñ'); devuelve 195, que es "Línea vertical con empalme gráfic

Ehhh a mi me sale en codificación ANSI que significa codificación standard del archivo, en mi caso ISO-8859-1, es el 241 con ord('ñ'), si uso utf8 que es lo que debes estar usando me sale 195... Pero repito, insto, recalco que leas los comentarios en el manual oficial, hay muchos aportes para poder hacer lo que pides.
__________________
Verifica antes de preguntar.
Los verdaderos amigos se hieren con la verdad, para no perderlos con la mentira. - Eugenio Maria de Hostos
  #13 (permalink)  
Antiguo 21/01/2013, 10:53
 
Fecha de Ingreso: febrero-2004
Mensajes: 1.987
Antigüedad: 20 años, 2 meses
Puntos: 22
Respuesta: ¿por que ord('ñ'); devuelve 195, que es "Línea vertical con empalme gráfic

Cita:
Iniciado por abimaelrc Ver Mensaje
Ehhh a mi me sale en codificación ANSI que significa codificación standard del archivo, en mi caso ISO-8859-1, es el 241 con ord('ñ')
Abimael su PHP imprime 241???
El mio 195 !

Yo esperaria un 164 ya que ese es el valor ASCII

El retorno de ORD() depende de la cabecera del ARCHIVO ?
  #14 (permalink)  
Antiguo 21/01/2013, 10:54
Avatar de abimaelrc
Colaborador
 
Fecha de Ingreso: mayo-2009
Ubicación: En el planeta de Puerto Rico
Mensajes: 14.734
Antigüedad: 14 años, 11 meses
Puntos: 1517
Respuesta: ¿por que ord('ñ'); devuelve 195, que es "Línea vertical con empalme gráfic

Padre pero no estás leyendo. Dije que es lo que ocurre cuando cambias de codificación... Si el archivo es utf8 como en tu caso es 195, si es ISO-8859-1 es 241, mira este ejemplo de como trabajan removiendo los caracteres especiales http://stackoverflow.com/questions/3...-from-a-string

Edito: El ejemplo es para que te des una idea, no necesariamente es lo que pides.
__________________
Verifica antes de preguntar.
Los verdaderos amigos se hieren con la verdad, para no perderlos con la mentira. - Eugenio Maria de Hostos

Última edición por abimaelrc; 21/01/2013 a las 11:00
  #15 (permalink)  
Antiguo 21/01/2013, 12:04
 
Fecha de Ingreso: febrero-2004
Mensajes: 1.987
Antigüedad: 20 años, 2 meses
Puntos: 22
Respuesta: ¿por que ord('ñ'); devuelve 195, que es "Línea vertical con empalme gráfic

Cita:
Iniciado por Anarko Ver Mensaje
El retorno de ORD() depende de la cabecera del ARCHIVO ?
Basandome en la asesoria de Abimael
Cita:
Iniciado por abimaelrc Ver Mensaje
es lo que ocurre cuando cambias de codificación...
la respuesta sería SI.

ORD() devuelve uno u otro valor dependiendo de la cabecera del file...



Gracias ABIM.

Etiquetas: devuelve, vertical
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 16:03.