make-transcoder, transcoder-codec, transcoder-eol-style, transcoder-error-handling-mode - port transcoders

LIBRARY

(import (rnrs))                     ;R6RS
(import (rnrs io ports))            ;R6RS

SYNOPSIS

(make-transcoder codec)
(make-transcoder codec eol-style)
(make-transcoder codec eol-style handling-mode)

(transcoder-codec transcoder)
(transcoder-eol-style transcoder)
(transcoder-error-handling-mode transcoder)

DESCRIPTION

Returns a transcoder with the behavior specified by the arguments.

Codec must be a codec. The standard codecs are those returned by latin-1-codec, utf-8-codec, and utf-16-codec.

Eol-style is optional and must be an eol-style(3scm) symbol: lf, cr, crlf, nel, crnel, or ls. It defaults to the native end-of-line style of the underlying platform.

Handling-mode is optional and must be an error-handling-mode(3scm) symbol: ignore, raise, or replace (default).

IMPLEMENTATION NOTES

IronScheme
The native end-of-line style is crlf.

RETURN VALUES

Returns a single value which is a transcoder object.

EXAMPLES

; Decodes a UTF-8-encoded string with ISO-8859-1.
; Note also how \r\n is read as a single newline.
(let* ((bv (string->utf8 "Döner\r\nkebab"))
       (p (open-bytevector-input-port bv))
       (tc (make-transcoder (latin-1-codec)
                            (eol-style lf)))
       (tp (transcoded-port p tc)))
  (get-string-all tp))
        => "Döner\nkebab"

APPLICATION USAGE

This procedure is used in applications that need to control the binary encoding of textual ports.

RATIONALE

Transcoders let applications control parameters that would otherwise be implicit.

COMPATIBILITY

Transcoders are unique to the R6RS I/O system.

ERRORS

This procedure can raise exceptions with the following condition types:
&assertion (R6RS)
The wrong number of arguments was passed or an argument was outside its domain.

SEE ALSO

transcoded-port(3scm), port-transcoder(3scm), native-transcoder(3scm), native-eol-style(3scm)

STANDARDS

R6RS

HISTORY

Port transcoders were introduced in R6RS.

AUTHORS

This page is part of the scheme-manpages project. It includes materials from the RnRS documents. More information can be found at https://github.com/schemedoc/manpages/.

BUGS

There is no transcoder? procedure in R6RS.


Markup created by unroff 1.0sc,    March 04, 2023.