8.5字节字符和编码
2016-02-27 本文已影响36人
jarod_chan
函数read-line,read,display和write都能工作在字符上。事实上,他们使用read-char和write-char实现。
更加简单的是,读写字节流代替字符流。函数read-byte,write-byte能够读写原始字节。其它函数,像read-bytes-line构建在字节流之上。
事实上,read-char
和write-char
都是用read-byte
和write-byte
实现的。当一个字节的值小于128,那么他被当做ASCII字符。其它的字节则被当做utf-8序列的一部分,utf-8是字节标准的编码方式。(幸运的是ASCII码被编码成本身)。因此,read-char多次调用read-byte,write-char可以产生多个字节输出。
read-char和write-char操作总是使用utf-8编码。如果你有一个不同编码的流或者你想要生成一个不同编码的文本流,使用reencode-input-port
,reencode-output-port
。他们可以从你指定的编码方式转化成UTF-8的流,read-char 就可以读到UTF-8编码。但是注意,read-byte也会读到重编码的数据。