ASCII нечитаемые символы 28, 29 31 - PullRequest
9 голосов
/ 26 февраля 2011

Я обрабатываю файл, который мне нужно разделить на основе разделителя.

В следующем коде показаны разделители, определенные для файлов, которые я обрабатываю

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);

Может кто-нибудь объяснить, пожалуйста, значение этих конкретных разделителей?

Глядя на коды ASCII, эти разделители являются разделителями файлов, групп и единиц.Я не очень понимаю, что это значит.

Ответы [ 4 ]

23 голосов
/ 26 февраля 2011

Нашел это здесь.Классный сайт!

28 - FS - Разделитель файлов Разделитель файлов FS представляет собой интересный управляющий код, поскольку он дает нам представление о том, как компьютерные технологии были организованы в шестидесятых годах.Сейчас мы привыкли к носителям с произвольным доступом, таким как RAM и магнитные диски, но когда был определен стандарт ASCII, большинство данных были последовательными.Я говорю не только о последовательной связи, но и о последовательном хранении, таком как перфокарты, бумажная лента и магнитные ленты.В такой ситуации очевидно, что эффективнее иметь один управляющий код для сигнализации о разделении двух файлов.ФС была определена для этой цели.

29 - GS - Разделитель групп Хранение данных было одной из основных причин, по которым некоторые контрольные коды попали в определение ASCII.Базы данных чаще всего настраиваются с помощью таблиц, содержащих записи.Все записи в одной таблице имеют одинаковый тип, но записи разных таблиц могут быть разными.Разделитель групп GS определен для разделения таблиц в системе хранения последовательных данных.Обратите внимание, что таблица слов не использовалась в тот момент, и люди из ASCII назвали ее группой.

30 - RS - Разделитель записей В группе (или таблице) записи разделяются RS или разделителем записей.

31 - США - Разделитель единиц Наименьшие элементы данных, которые должны храниться в базе данных, называются единицами в определении ASCII.Мы бы назвали их полем сейчас.Разделитель единиц разделяет эти поля в среде хранения последовательных данных.Большинство современных реализаций базы данных требуют, чтобы поля большинства типов имели фиксированную длину.В записи достаточно места для хранения максимально возможного члена каждого поля, даже если в большинстве случаев это не требуется.Это стоит большого количества места во многих ситуациях.Контрольный код США позволяет всем полям иметь переменную длину.Если пространство для хранения данных ограничено - как в шестидесятых - это хороший способ сохранить ценное пространство.С другой стороны, последовательное хранилище гораздо менее эффективно, чем современное использование настольных ОЗУ и дисков.Я не могу представить ситуацию, когда современные базы данных SQL работают с данными, хранящимися на бумажной ленте или магнитных барабанах ...

10 голосов
/ 26 февраля 2011

Прочитайте раздел ASCII Delimiter этого урока , чтобы понять это. А затем прочитайте эту статью , конкретно говоря о способе ASCII разграничения текста с использованием 28,29 и 31.

2 голосов
/ 09 апреля 2014

Символы управления ascii варьируются от 28 до 31. (От 0x1C до 0x1F)

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

Пример вызова:

char record_separator = 0x1F;
String s = "hello" + record_separator + "world"
1 голос
/ 26 февраля 2011

Эти символы являются управляющими.Они предназначены не для того, чтобы их писали или читали люди, а для компьютеров.Вы должны относиться к ним в своей программе как к любому другому персонажу.

...