我正在java中实现TFTP(RFC 1350)客户端和服务器。
目前支持三种转移模式:netascii(这是 “美国信息交换标准代码”中定义的ascii [1]具有“Telnet协议”中指定的修改 规范“[3]。)注意它是8位ascii。术语 “netascii”将在本文档中用于表示这一点 特定版本的ascii。);
这在Java术语中意味着什么?以及如何在这种模式下读/写文件或转换字符串?
答案 0 :(得分:2)
netascii似乎被定义为ASCII的8位扩展,但仅限于基本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为您处理此问题,但如果您想推出自己的实现,只需在Java中使用US-ASCII
编码,然后执行额外检查以确保您不要t具有0x00-0x20范围内的任何非允许控制字符,并最终确保您的换行符是CRLF而不仅仅是LF。
答案 1 :(得分:1)
问:这在Java术语中意味着什么?
答:我认为这只是意味着您在读取或写入这些8位ASCII值时需要指定字符集:
byte[] bytes = string.getBytes("UTF-8");
String string = new String(bytes, "UTF-8");