Plasma GitLab Archive
Projects Blog Knowledge

Module Netencoding.QuotedPrintable

module QuotedPrintable: sig .. end


This module implements the "Quoted Printable" encoding as described in RFC 2045.

This implementation assumes that the encoded string has a text MIME type. On input both CR/LF and LF are accepted as end-of-line (eol) terminators, but the output normalizes the eol delimiter as the crlf argument specifies. Note that this implies that

  • If crlf, the output uses CR/LF as line separator as MIME prescribes
  • the encoding is not invertible for binary data

val encode : ?crlf:bool -> ?pos:int -> ?len:int -> string -> string
Encodes the string and returns it.

Since OcamlNet 0.98, soft line breaks are added to the output to ensure that all output lines have a length <= 76 bytes.

Note unsafe characters: As recommended by RFC 2045, the characters !#$@[]^`|{}~ and the double quotes are additionally represented as hex tokens. Furthermore, the letter 'F' is considered as unsafe if it occurs at the beginning of the line, so the encoded text never contains the word "From" at the beginning of a line.

If pos and/or len are passed, only the substring starting at pos (default: 0) with length len (default: rest of the string) is encoded.

If crlf is set (the default), the output text uses CR/LF as line separator. Otherwise only LF is used.

val encode_tstring : ?crlf:bool -> ?pos:int -> ?len:int -> Netsys_types.tstring -> Bytes.t
Same for tagged string inputs. The result are always bytes, though
val encode_poly : ?crlf:bool ->
?pos:int -> ?len:int -> 's Netstring_tstring.tstring_ops -> 's -> Bytes.t
Polymorphic version
val decode : ?pos:int -> ?len:int -> string -> string
Decodes the string and returns it.

Most format errors cause an Invalid_argument exception.

If pos and/or len are passed, only the substring starting at pos (default: 0) with length len (default: rest of the string) is decoded.

val decode_tstring : ?pos:int -> ?len:int -> Netsys_types.tstring -> Bytes.t
Same for tagged string inputs. The result are always bytes, though
val decode_poly : ?pos:int -> ?len:int -> 's Netstring_tstring.tstring_ops -> 's -> Bytes.t
Polymorphic version
class encoding_pipe : ?crlf:bool -> unit -> Netchannels.pipe
This pipe encodes the data written into the pipe.
class decoding_pipe : unit -> Netchannels.pipe
This pipe decodes the data written into the pipe.
This web site is published by Informatikbüro Gerd Stolpmann
Powered by Caml