On this page:
13.1 Functions
qp-encode
qp-decode
qp-encode-stream
qp-decode-stream
13.2 Exceptions
qp-error
qp-wrong-input
qp-wrong-line-size
13.3 Quoted-Printable Unit
qp@
13.4 -Printable Signature
qp^

13 Quoted-Printable: Encoding and Decoding

The net/qp library provides utilities for quoted-printable (mime-standard) encoding and decoding from RFC 2045 section 6.7.
The library was written by Francisco Solsona.

13.1 Functions

(qp-encode bstr)  bytes?
  bstr : bytes?
Consumes a byte string and returns its quoted printable representation as a new string. The encoded string uses #"\r\n" where necessary to create shorter lines.

(qp-decode bstr)  bytes?
  bstr : bytes?
Consumes a byte string and returns its un-quoted printable representation as a new string. Non-soft line breaks are preserved in whatever form they exist (CR, LR, or CRLF) in the input string.

(qp-encode-stream in out [newline-bstr])  void?
  in : input-port?
  out : output-port?
  newline-bstr : bytes? = #"\n"
Reads characters from in and writes the quoted printable encoded result to out.

The newline-bstr argument is used for soft line-breaks (after =). Note that the default newline-bstr is just #"\n", not #"\r\n".

Other line breaks are preserved in whatever form they exist (CR, LR, or CRLF) in the input stream.

(qp-decode-stream in out)  void?
  in : input-port?
  out : output-port?
Reads characters from in and writes de-quoted-printable result to out. Non-soft line breaks are preserved in whatever form they exist (CR, LR, or CRLF) in the input stream.

13.2 Exceptions

(struct qp-error ()
  #:extra-constructor-name make-qp-error)
(struct qp-wrong-input qp-error ()
  #:extra-constructor-name make-qp-wrong-input)
(struct qp-wrong-line-size qp-error ()
  #:extra-constructor-name make-qp-wrong-line-size)
None of these are used anymore, but the bindings are preserved for backward compatibility.

13.3 Quoted-Printable Unit

qp@ and qp^ are deprecated. They exist for backward-compatibility and will likely be removed in the future. New code should use the net/qp module.

 (require net/qp-unit)

qp@ : unit?
Imports nothing, exports qp^.

13.4 -Printable Signature

 (require net/qp-sig)

qp^ : signature

Includes everything exported by the net/qp module.