Provided by: tcllib_2.0+dfsg-4_all 

NAME
base64 - base64-encode/decode binary data
SYNOPSIS
package require Tcl 8.5 9
package require base64 ?2.6.1?
::base64::encode ?-maxlen maxlen? ?-wrapchar wrapchar? string
::base64::decode string
________________________________________________________________________________________________________________
DESCRIPTION
This package provides procedures to encode binary data into base64 and back.
BEWARE: VARIATIONS IN DECODING BEHAVIOUR
The Tcl core provides since version 8.6 commands for the de- and encoding of base64 data. These are
binary encode base64
binary decode base64
Beware that while these are signature compatible with the commands provided by this package, the decoders
are not behaviourally compatible.
The core decoder command accepts the option -strict, enabling the user to choose between strict and lax
modes. In the strict mode invalid characters, and partial data at the end of the input are reported as
errors. In lax mode they are ignored.
All the implementations provided by this package on the other hand implement a mix of the above, and the
user cannot choose. Partial data at the end of the input is reported as error, and invalid characters are
ignored.
Beware of these differences when switching code from one to other.
API
::base64::encode ?-maxlen maxlen? ?-wrapchar wrapchar? string
Base64 encodes the given binary string and returns the encoded result. Inserts the character
wrapchar every maxlen characters of output. wrapchar defaults to newline. maxlen defaults to 76.
Note that if maxlen is set to 0, the output will not be wrapped at all.
Note well: If your string is not simple ASCII you should fix the string encoding before doing
base64 encoding. See the examples.
The command will throw an error for negative values of maxlen, or if maxlen is not an integer
number.
::base64::decode string
Base64 decodes the given string and returns the binary data. The decoder ignores whitespace in
the string.
IMPLEMENTATION NOTES
This package contains three different implementations for base64 de- and encoding, and chooses among them
based on the environment it finds itself in.
All three implementations have the same behaviour. See also Beware: Variations in decoding behaviour at
the beginning of this document.
[1] If Tcl 8.6 or higher is found the commands are implemented in terms of the then-available builtin
commands.
[2] If the Trf extension cand be loaded the commands are implemented in terms of its commands.
[3] If neither of the above are possible a pure Tcl implementation is used. This is of course much
slower.
EXAMPLES
% base64::encode "Hello, world"
SGVsbG8sIHdvcmxk
% base64::encode [string repeat xyz 20]
eHl6eHl6eHl6eHl6eHl6eHl6eHl6eHl6eHl6eHl6eHl6eHl6eHl6eHl6eHl6
eHl6eHl6eHl6
% base64::encode -wrapchar "" [string repeat xyz 20]
eHl6eHl6eHl6eHl6eHl6eHl6eHl6eHl6eHl6eHl6eHl6eHl6eHl6eHl6eHl6eHl6eHl6eHl6
# NOTE: base64 encodes BINARY strings.
% set chemical [encoding convertto utf-8 "C\u2088H\u2081\u2080N\u2084O\u2082"]
% set encoded [base64::encode $chemical]
Q+KCiEjigoHigoBO4oKET+KCgg==
% set caffeine [encoding convertfrom utf-8 [base64::decode $encoded]]
BUGS, IDEAS, FEEDBACK
This document, and the package it describes, will undoubtedly contain bugs and other problems. Please
report such in the category base64 of the Tcllib Trackers [http://core.tcl.tk/tcllib/reportlist]. Please
also report any ideas for enhancements you may have for either package and/or documentation.
When proposing code changes, please provide unified diffs, i.e the output of diff -u.
Note further that attachments are strongly preferred over inlined patches. Attachments can be made by
going to the Edit form of the ticket immediately after its creation, and then using the left-most button
in the secondary navigation bar.
KEYWORDS
base64, encoding
CATEGORY
Text processing
COPYRIGHT
Copyright (c) 2000, Eric Melski
Copyright (c) 2001, Miguel Sofer
tcllib 2.6.1 base64(3tcl)