2012-06-07 5 views
1

Внедрение клиента и сервера TFTP (RFC 1350) в java.Обработка «netascii» в JAVA

Три режима передачи в настоящее время поддерживаются: netascii (Это ASCII, как определено в «США стандартный код для обмена информацией» [1] с изменениями, указанными в разделе «Telnet, протокол спецификации» [3].) Обратите внимание, что это 8 бит ascii. Термин «netascii» будет использоваться в этом документе для обозначения этой конкретной версии ascii.);

Что это означает в терминах Java? и как можно читать/записывать в файл или преобразовывать String в этот режим?

ответ

2

netascii представляется как 8-разрядное расширение ASCII, b ut ограничено базовым ASCII в диапазоне от 0x20 до 0x7F, plus 8 control characters (см. стр. 9): 0x00 (NUL), 0x10 (LF), 0x13 (CR), 0x07 (BEL), 0x08 (BS), 0x09 (HT), 0x11 (VT) и 0x12 (FF).

Кроме того, чтобы убедиться, что ваш выход является чистым ASCII только в этом диапазоне, другое требование netascii заключается в том, что строки новой строки всегда являются CRLF, поэтому вы должны соответствующим образом преобразовать. Любому CR может следовать только LF или NUL.

Вы можете использовать Apache Commons, чтобы обработать это для вас, но если вы хотите развернуть свою собственную реализацию, просто используйте кодировку US-ASCII на Java, а затем выполните дополнительные проверки, чтобы убедиться, что у вас нет никаких недопустимых управляющих символов из диапазона 0x00-0x20 и, наконец, убедитесь, что ваши новые строки являются CRLF, а не только LF.

1

В: Что это означает в терминах Java?

A: Я думаю, что это просто означает, что вы должны указать набор символов при чтении или записи этих 8-битовые значения ASCII:

  • byte[] bytes = string.getBytes("UTF-8");

  • String string = new String(bytes, "UTF-8");

Смежные вопросы