正在用java实现TFTP (RFC 1350)客户端和服务器。
目前支持三种传输模式: netascii (这是“美国信息交换标准代码”1中定义的ascii,并修改了"Telnet协议规范“3)。注意,它是8位ascii。"netascii“一词将在整个文件中使用,指这一特定版本的ascii。);
这在Java术语中意味着什么?在这种模式下,如何读取/写入文件,或转换字符串?
发布于 2012-06-07 17:33:37
奈塔西似乎被定义为ASCII的8位扩展,但仅限于基本的ASCII,从0x20到0x7F、加8个控制字符 (见第9页):0x00 (NUL)、0x10 (LF)、0x13 (CR)、0x07 (BEL)、0x08 (BS)、0x09 (HT)、0x11 (VT)和0x12 (FF)。
除了确保您的输出仅在此范围内是纯ASCII之外,netascii的另一个要求是换行符总是CRLF,因此您必须相应地进行转换。任何CR只能跟随LF或NUL。
您可以使用阿帕奇公域为您处理这个问题,但是如果您想推出自己的实现,只需在Java中使用US-ASCII
编码,然后执行额外的检查,以确保您没有任何不允许的0x00-0x20范围内的控制字符,并最终确保您的新行是CRLFs而不是LFs。
发布于 2012-06-07 17:17:35
问:这在Java术语中意味着什么?
答:我认为这只是意味着在读取或写入这些8位ASCII值时,需要指定字符集:
byte[] bytes = string.getBytes("UTF-8");
String string = new String(bytes, "UTF-8");
https://stackoverflow.com/questions/10936478
复制相似问题