2011-02-26 20 views
7

Ok, estoy siendo grosero aquí. Estoy procesando un archivo que necesito dividir basado en el separador.caracteres no legibles ASCII 28, 29 31

El código siguiente muestra los separadores definidos para los archivos que estoy procesando

private static final String component = Character.toString((char) 31); 
private static final String data  = Character.toString((char) 29); 
private static final String segment  = Character.toString((char) 28); 

Por favor alguien puede explicar el significado de estos separadores específicos?

En cuanto a los códigos ASCII, estos separadores son archivos, grupos y unidades de separadores. Realmente no entiendo lo que esto significa.

Gracias

Respuesta

1

Estos caracteres son caracteres de control. No están destinados a ser escritos ni leídos por humanos, sino por computadoras. Debes tratarlos en tu programa como cualquier otro personaje.

18

Found this here. Cool website!

28 - FS - separador del archivo separador de FS es una interesante código de control, ya que nos da una idea de la manera que la informática era organizada en los años sesenta. Ahora somos utilizados para medios de acceso aleatorio como RAM y discos magnéticos, pero cuando se definió el estándar ASCII , la mayoría de los datos eran en serie. No solo estoy hablando de las comunicaciones en serie , sino también del almacenamiento en serie , como tarjetas perforadas, cinta de papel y cintas magnéticas. En tal situación es claramente eficiente que tenga un solo código de control para señalar la separación de dos archivos. El FS se definió para este propósito.

29 - GS - Grupo separador de almacenamiento de datos fue una de las principales razones para un cierto control códigos para obtener en la definición ASCII. Las bases de datos son la mayoría de las veces configuradas con tablas que contienen registros. Todos los registros en una tabla tienen el mismo tipo , pero los registros de las diferentes tablas pueden ser diferentes. El separador de grupo GS se define para separar las tablas en un sistema de almacenamiento de datos en serie . Tenga en cuenta que la palabra tabla no se utilizó en ese momento y la gente ASCII lo llamó un grupo.

30 - RS - separador de registros Dentro de un grupo (o tabla) los registros se separan con RS o grabar separador.

31 - US - separador Unidad Los elementos de datos más pequeños que se almacena en una base de datos se llaman unidades en la definición ASCII. Los llamaríamos campo ahora. El separador de unidades separa estos campos en un entorno de almacenamiento de datos serial .La mayoría de las implementaciones de bases de datos requieren que los campos de la mayoría de los tipos tengan una longitud fija de . Suficiente espacio en el registro es asignado para almacenar el miembro más grande posible de cada campo, incluso si esto no es necesario en la mayoría de los casos. Esto cuesta una gran cantidad de espacio en en muchas situaciones. El código de control de EE. UU. permite que todos los campos tengan una longitud variable . Si el espacio de almacenamiento de datos es limitado, como en los años sesenta, esta es una buena forma de preservar el valioso espacio de . Por otro lado, el almacenamiento en serie es mucho menos eficiente que la tabla implementaciones de memoria RAM y disco de en los tiempos modernos. No me puedo imaginar una situación donde bases de datos SQL modernas se ejecutan con los datos almacenados en el papel cinta o bobinas magnéticas ...

+1

Me gusta esta respuesta mejor! Me ahorra leer mucho más y responde la pregunta directamente. – talkaboutquality

+0

Aunque sería beneficioso solo agregar los códigos ASCII decimales que se dieron en la respuesta elegida. Además, desde que vine aquí para ayudarme a deshacerme de estos códigos de un archivo de texto que guardé de una aplicación de chat, dar los códigos hexadecimales también sería bueno: 1C, 1D y 1F. Para saber cómo escribir en expresiones regulares, por cierto, ver aquí: http://stackoverflow.com/questions/3203190/regex-any-ascii-character – talkaboutquality

1

Los caracteres de control ASCII oscilan 28-31. (0x1C a 0x1F)

31 Unit Separator 
30 Record Separator 
29 Group Separator 
28 File Separator 

invocación de la muestra:

char record_separator = 0x1F; 
String s = "hello" + record_separator + "world" 
+0

Explicación simple, gracias. –

Cuestiones relacionadas