Personaje de escape
En informática y telecomunicaciones, un carácter de escape es un carácter que invoca una interpretación alternativa de los siguientes caracteres en una secuencia de caracteres. Un carácter de escape es un caso particular de metacaracteres. Generalmente, el juicio de si algo es un personaje de escape o no depende del contexto.
En el campo de las telecomunicaciones, los caracteres de escape se utilizan para indicar que los siguientes caracteres se codifican de manera diferente. Esto se utiliza para alterar los caracteres de control que, de lo contrario, el hardware de telecomunicaciones subyacente detectaría y actuaría sobre ellos. En este contexto, el uso de caracteres de escape a menudo se denomina entrecomillado.
Definición
Un carácter de escape puede no tener su propio significado, por lo que todas las secuencias de escape son de dos o más caracteres.
Los caracteres de escape forman parte de la sintaxis de muchos lenguajes de programación, formatos de datos y protocolos de comunicación. Para un alfabeto dado, el propósito de un carácter de escape es iniciar secuencias de caracteres (así denominadas secuencias de escape), que deben interpretarse de manera diferente a los mismos caracteres que aparecen sin el carácter de escape prefijado.
Las funciones de las secuencias de escape incluyen:
- Para codificar una entidad sintáctica, como comandos de dispositivo o datos especiales, que no pueden ser representados directamente por el alfabeto.
- Representar caracteres, denominados carácter, que no se puede escribir en el contexto actual, o tendría una interpretación no deseada. En este caso, una secuencia de escape es un gráfico que consiste en un personaje de escape en sí mismo y un personaje "citado".
Personaje de control
Por lo general, un carácter de escape no es un caso particular de los caracteres de control (dispositivo), ni viceversa. Si definimos los caracteres de control como no gráficos o con un significado especial para un dispositivo de salida (por ejemplo, una impresora o un terminal de texto), cualquier carácter de escape para este dispositivo es un carácter de control. Pero los caracteres de escape utilizados en la programación (como la barra invertida, "") son gráficos, por lo que no son caracteres de control. Por el contrario, la mayoría (pero no todos) de los "caracteres de control" ASCII; tienen alguna función de control de forma aislada, por lo que no son caracteres de escape.
En muchos lenguajes de programación, un carácter de escape también forma algunas secuencias de escape que se conocen como caracteres de control. Por ejemplo, el salto de línea tiene una secuencia de escape de n
.
Ejemplos
Javascript
JavaScript usa el (barra invertida) como un carácter de escape para:
'
cita simple"
doble cita\
backslashn
nueva línear
transportet
pestañab
backspacef
alimentov
ficha vertical (Internet Explorer 9 y tratamientos antiguos'v
como'v
en lugar de una pestaña vertical ('x0B
). Si la compatibilidad entre navegadores es una preocupación, usex0B
en lugar dev
.)carácter null (U+0000 NULL) (sólo si el siguiente personaje no es un dígito decimal; de lo contrario es una secuencia de escape octal)
xFF
carácter representado por el byte hexadecimal "FF"
Tenga en cuenta que v
y no se permiten escapes en cadenas JSON.
Código de ejemplo:
consola.log()"Usando \n n cambiará los caracteres después de \n una fila hacia abajo")consola.log()"Usando \t t cambiará los caracteres después de \t una longitud de la pestaña a la derecha")consola.log()"Usando \r imite una devolución de carro, lo que significa cambiar al comienzo de la fila") // se puede utilizar para limpiar la pantalla en algunos terminales. Windows utiliza rn en lugar de n solo
Carácter de escape ASCII
El código ASCII "escape" carácter (octal: 33
, hexadecimal: x1B
, o ^[
, o, en decimal, 27
) se usa en muchos dispositivos de salida para iniciar una serie de caracteres llamada secuencia de control o secuencia de escape. Por lo general, el carácter de escape se enviaba primero en una secuencia de este tipo para alertar al dispositivo de que los siguientes caracteres debían interpretarse como una secuencia de control en lugar de como caracteres simples, luego seguirían uno o más caracteres para especificar alguna acción detallada, después de lo cual el el dispositivo volvería a interpretar los caracteres con normalidad. Por ejemplo, la secuencia de ^[
, seguida de los caracteres imprimibles [2;10H
, causarían un terminal DEC VT102 para mover el cursor a la décima celda de la segunda línea de la pantalla. Esto se desarrolló más tarde para los códigos de escape ANSI cubiertos por el estándar ANSI X3.64. El carácter de escape también inicia cada secuencia de comandos en el lenguaje de comandos de impresoras de Hewlett Packard.
Una de las primeras referencias al término "personaje de escape" se encuentra en las publicaciones técnicas de IBM de Bob Bemer, a quien se le atribuye la invención de este mecanismo durante su trabajo en el conjunto de caracteres ASCII.
La tecla Escape generalmente se encuentra en los teclados de PC estándar. Sin embargo, suele estar ausente de los teclados para PDA y otros dispositivos que no están diseñados principalmente para comunicaciones ASCII. La serie DEC VT220 fue uno de los pocos teclados populares que no tenía una tecla Esc dedicada, en lugar de usar una de las teclas sobre el teclado principal. En las interfaces de usuario de las décadas de 1970 y 1980, no era raro usar esta tecla como un carácter de escape, pero en las computadoras de escritorio modernas, ese uso se abandonó. A veces, la tecla se identificaba con AltMode (para el modo alternativo). Incluso sin una tecla dedicada, el código de carácter de escape podría generarse escribiendo [
mientras mantiene presionada simultáneamente Ctrl.
Programación y formatos de datos
Muchos lenguajes de programación modernos especifican el carácter de comillas dobles (& #34;
) como delimitador para un literal de cadena. El carácter de escape de barra invertida () suele proporcionar dos formas para incluir comillas dobles dentro de una cadena literal, ya sea modificando el significado del carácter de comillas dobles incrustado en la cadena (
"
se convierte en "
), o modificando el significado de una secuencia de caracteres que incluye el valor hexadecimal de un carácter de comillas dobles (x22
se convierte en "
).
C, C++, Java y Ruby permiten exactamente los mismos dos estilos de escape de barra invertida. El lenguaje PostScript y el formato de texto enriquecido de Microsoft también utilizan escapes de barra invertida. La codificación entre comillas imprimible utiliza el signo igual como carácter de escape.
URL y URI usan %-escapes para entrecomillar caracteres con un significado especial, como para los caracteres que no son ASCII. El carácter ampersand (&
) se puede considerar como un carácter de escape en SGML y formatos derivados como HTML y XML.
Algunos lenguajes de programación también brindan otras formas de representar caracteres especiales en literales, sin requerir un carácter de escape (consulte, por ejemplo, colisión de delimitadores).
Protocolos de comunicación
El protocolo punto a punto (PPP) utiliza el 0x7D
octeto (175
, o ASCII: }
) como carácter de escape. El octeto inmediatamente siguiente debe ser XORed por 0x20
antes de ser pasó a un protocolo de nivel superior. Esto se aplica tanto a 0x7D
como al carácter de control 0x7E
(que se usa en PPP para marcar el comienzo y final de una trama) cuando esos octetos necesitan ser transmitidos por un protocolo de nivel superior encapsulado por PPP, así como otros octetos negociados cuando se establece el enlace. Es decir, cuando un protocolo de nivel superior desea transmitir 0x7D
, se transmite como la secuencia 0x7D 0x5D
, y 0x7E
se transmite como 0x7D 0x5E
.
Concha de Bourne
En Bourne shell (sh), el asterisco (*
) y signo de interrogación (?
) caracteres son caracteres comodín expandidos a través de globbing. Sin un carácter de escape anterior, un *
se expandirá a los nombres de todos los archivos en el directorio de trabajo que no comienzan con un punto si y solo si existen dichos archivos; de lo contrario, *
permanece sin expandir. Entonces, para referirse a un archivo llamado literalmente "*", se debe indicar al shell que no lo interprete de esta manera, precediéndolo con una barra invertida (). Esto modifica la interpretación del asterisco (
*
). Comparar:
rm * # eliminar todos los archivos en el directorio actualrm * # Borrar el archivo llamado # |
Símbolo del sistema de Windows
El intérprete de línea de comandos de Windows usa un carácter de intercalación (^
) para escapar de caracteres reservados que tienen significados especiales (en particular: &
, |
, (
, )
, <
, >
, ^). El intérprete de línea de comandos de DOS, aunque tiene una sintaxis similar, no admite esto.
Por ejemplo, en el símbolo del sistema de Windows, esto generará un error de sintaxis.
C:eco .Hola mundo
La sintaxis del comando es incorrecta.
mientras que esto generará la cadena: <hola mundo>
C:eco ^.Hola mundo↑♪ ♪♪
Windows PowerShell
En Windows, la barra invertida se usa como separador de ruta; por lo tanto, generalmente no se puede utilizar como carácter de escape. En su lugar, PowerShell usa un acento grave (`).
Por ejemplo, el siguiente comando:
PS C: eco "#Primera línea`nNueva línea Primera líneaNueva línea
Otros
- Quoted-printable, que codifica datos de 8 bits en datos de 7 bits de longitudes de línea limitadas, utiliza el signo de igualdad (
=
Como un personaje de escape.
Contenido relacionado
Nelson
As de Júpiter
Eric s raymond