Página 1 de 1

Convertir texto ASCII a texto normal

NotaPublicado: 2009-09-29 20:41 @904
por BigBear
Hi!

Mi gran duda es convertir texto ASCII separado por comas a texto normal, por ejemplo: 117,115,101,114,115 = users

¿Alguien podría ayudarme?

Re: Convertir texto ASCII a texto normal

NotaPublicado: 2009-09-29 21:53 @953
por nemest
No sé si esto te sirva.

Lo encontré ayer o antes de ayer (por aquí se dice antiayer).

http://www.perlmonks.org/?parent=557655;node_id=3333

Re: Convertir texto ASCII a texto normal

NotaPublicado: 2009-09-30 03:10 @173
por explorer
La pregunta está mal planteada...

Lo que quieres hacer es transformar una lista de números a los caracteres a los que corresponden esos números.

Es decir, si en una variable tengo

$var = 117;

lo que quiero es obtener

$var = 'u';

Curiosamente, esto es lo que ocurre de forma directa si estuviéramos en un lenguaje como el C, donde la representación de un entero puede ser usada como valores que representan los caracteres, pudiendo hacer cosas como esta:

Sintáxis: [ Descargar ] [ Ocultar ]
Using c Syntax Highlighting
var = 'A' + 15;
Coloreado en 0.001 segundos, usando GeSHi 1.0.8.4


que quiere decir que al valor numérico que representa al valor de 'A' le sumamos 15, con lo que en 'var' guardamos un valor entero, pero que podemos usar también para obtener el carácter que está a 15 posiciones de la letra 'A'.

El problema es que ya no se hace esto hoy en día, porque... lo que Murdoc Rush quiere indicar como "caracteres normales", es incompleto. Falta algo.

¿Qué es un carácter normal para Murdoc Rush? En otras palabras: ¿cuál es la codificación de caracteres que él considera normal?

El ASCII era el estándar de codificación hace muchos años, pero solo era uno de varios (casi cada empresa publicaba el suyo). Todo era un jaleo hasta que la ISO publicó sus estándares. En Europa, por ejemplo, se adoptó el estándar iso-8859-1 para los alfabetos centro europeos. Este alfabeto se eligió porque es el más parecido al ASCII, aparte de que contiene la mayoría de las letras acentuadas de Europa. Enseguida fue adoptado por los sistemas operativos de la época (1987), excepto Micro$oft, que se inventó su propia variación llamada Windows-1252.

Como Perl nació en aquella época, es también la codificación por defecto para trabajar con él.

Con los años, se han hecho cambios. Ahora los europeos usamos la variación iso-8859-15, donde, aparte de otros caracteres acentuados, está el símbolo del Euro.

En otros países se usan otras codificaciones, claro.

Ahora la tendencia es a usar utf-8 en todo.

Así que, antes de responder a Murdoc Rush, habría que preguntarle, qué es para él "caracteres normales". O dicho de otra manera, ¿cuál es para él una codificación normal? Pues, dependiendo de una o de otra, la solución será distinta.

La solución indicada por nemest es correcta (usar pack()), así como hacer un map() aplicando un chr() a cada valor, y otras combinaciones, pero con eso obtenemos el resultado en formato iso-8859-1. ¿Esa es la codificación "normal" para Murdoc Rush?