Date: Sun, 25.03.12 00:00
FTSC FIDONET TECHNICAL STANDARDS COMMITTEE
Revision: 1, Draft 4
Title: Character set definition in Fidonet messages
Author(s): Peter Krefting (born Karlsson)
Date: 25 March 2012
2. Format of the identifier
3. Supported levels
4. Supported character sets
5. Obsolete identifiers
Status of this document
This document is a Fidonet Standard (FTS).
This document specifies a Fidonet standard for the Fidonet community.
This document is released to the public domain, and may be used,
copied or modified for any purpose whatever.
This document defines the identifiers that are used to indicate the
character sets and character encodings used within messages that are
distributed in Fidonet.
There have been many attempts on defining a common standard on what
character encodings are used in Fidonet distributed messages. The
only one that has gained widespread use is the "CHRS" specification
described in FSC-0054. This document tries to describe the current
use, as well as standardising the parts of it that were ambiguously
As Fidonet is an international network, one has to consider that
not all people use English to write messages. Many languages have
alphabets that are either bigger than the standard English alphabet,
or completely different. To keep track of which character set and
character encoding is used for a particular message, this document
describes a way to identify this to message reading software.
1.1 Definition of terms.
A character set is the collection of characters that is used to
display text. Examples of a character set are the ASCII set, the
LATIN 1 set and the universal character set or Unicode character
An encoding scheme is the algorithm to transform characters from
a specific character set into a number or set of numbers that can be
stored and manipulated. An example is UTF-8, an encoding scheme
for the universal character set.
The distinction between character set and character encoding scheme
is only meaningful for character sets that need more than one byte
for representation. 7 and 8 bit character sets are normally
represented by a scalar value up to 255. For Unicode that uses the
universal character set, there is more than one way however to
represent a particular character. There is UTF-8, UTF-16 and UTF-32.
These are different encoding schemes for one and the same character
set, the universal character set.
2. Character set identification line
The character encoding of a message is specified in the "CHRS"
The CHRS control line is formatted as follows:
Where is a character string of no more than eight (
ASCII characters identifying the character set or character encoding
scheme used, and level is a positive integer value describing what
level of CHRS the message is written in.
For backwards compatibility, "CHARSET" may be treated as a synonym
Some implementations do not add the field and some
implementations erroneously present "UTF-8 2" instead of "UTF-8 4".
Well mannered implementations should gracefully handle this situation
when reading messages. The recommended way of doing this is to
ignore the level parameter and only use the name of the identifier.
In future the level parameter may become obsolete.
Incoming messages without "CHRS" control lines should be considered
as being written in pure ASCII, but may be treated as being written
in some default character set or character encoding scheme. Such as
IBM codepage 437, IBM codepage 866 or UTF-8. It is recommended that
message readers offer the user the option of manually selecting a
different character set or encoding scheme for these messages on a
per-area, per-message or other basis.
3. Supported levels
These levels are the ones that are implemented in current software:
This level is for messages containing pure seven bit ASCII only.
Outgoing messages in pure ASCII need not be identified by a "CHRS"
control line, but if they are, they should be indicated as
"ASCII 1" (not "ASCII 0".
First level of internationalisation, using seven bit character sets.
Most of these are based on US ASCII, with minor internationalisation
Second level of internationalisation, using eight bit character
This level adds support for character sets that use "extended
ASCII", i.e codes with the most significant bit set. The character
sets in level two are all based on ASCII (the codes 0-127 coincide
Level 3 is included just for completeness as it was mentioned in the
proposals (FSC-0054 and FSP-1013, now FRL-1020) that this standard is
It seems level 3 was originally meant for 16 bit character sets but
there never was an implementation and there may never be. This may
have to do with the NULL byte being reserved in the Fidonet
specifications as a termination character.
Level 3 is "reserved".
Level 4 is for multi byte character encodings. The only presently
known implementation is UTF-8.
4. Known character set identifiers
This is a list of character set and character encoding scheme
identifiers that are known to be in use or to have been in use in
Fidonet. This list is not exhaustive and is not meant to be a list
of characters sets or character encoding identifiers that all must
be supported by an implementation. It is perfectly all right for
an implementation to only have partial support.
A common method of implementation is to have a character translation
table for each character set or character encoding identifier. The
user can add or delete these tables to or from his configuration in
order to add or delete support for character set/encoding. The
details are left to the implementation.
Identifier Character set
Level 1 character sets (seven-bit)
Level 1 is no longer "current practise". The level 1 character
sets are included here for backward compatibility.
ASCII ISO 646-1 (US ASCII)
DUTCH ISO 646 Dutch
FINNISH ISO 646-10 (Swedish/Finnish)
FRENCH ISO 646 French
CANADIAN ISO 646 Canadian
GERMAN ISO 646 German
ITALIAN ISO 646 Italian
NORWEIG ISO 646 Norwegian
PORTU ISO 646 Portuguese
SPANISH ISO 646 Spanish
SWEDISH ISO 646-10 (Swedish/Finnish)
SWISS ISO 646 Swiss
UK ISO 646 UK
ISO-10 ISO 646-10 (Deprecated alias)
Level 2 character sets (eight-bit, ASCII based)
CP437 IBM codepage 437 (DOS Latin US)
CP850 IBM codepage 850 (DOS Latin 1)
CP852 IBM codepage 852 (DOS Latin 2)
CP866 IBM codepage 866 (Cyrillic Russian)
CP848 IBM codepage 848 (Cyrillic Ukrainian)
CP1250 Windows, Eastern Europe
CP1251 Windows, Cyrillic
CP1252 Windows, Western Europe
CP10000 Macintosh Roman character set
LATIN-1 ISO 8859-1 (Western European)
LATIN-2 ISO 8859-2 (Eastern European)
LATIN-5 ISO 8859-9 (Turkish)
LATIN-9 ISO 8859-15 (Western Europe with EURO sign)
Level 2 obsolete character set identifiers (see note)
IBMPC IBM PC character sets for European
+7_FIDO IBM codepage 866, use CP866 instead
MAC Macintosh character set, use CPxxxxx instead
UTF-8 UTF-8 encoding for the Unicode character set
5. Obsolete indentifiers
These indentifiers must not be used when creating new messages.
The following only applies to processing messages that were
created using old software.
Since the "IBMPC" identifier, initially used to indicate IBM
codepage 437, eventually evolved into identifying "any IBM
codepage", there exists in some implementations an additional
control line, "CODEPAGE", identifying the messages codepage:
This use is deprecated in favour of the "CPxxx" identifiers
defined above. If found in incoming messages, however, it should
be used as an override of the "CHRS: IBMPC" identifier.
The character set "+7_FIDO" is sometimes used as an identifier for
CP866. This use is deprecated, and "CP866" is recommended instead.
Implementations should treat "+7_FIDO" as a synonym for "CP866".
The character set "MAC" some time ago was used for Macintosh
character set, but now sysops should use CP10000 or another codepage
identifier from international standard: CP10029 for Macintosh
Central Europe languages, CP10007 for Macintosh Cyrillic and another.
FSC-54 also defined control lines for style changes, "CHRC". These
are not implemented in any software known to the authors, and are
Level 3, as defined by FSC-54, is also considered "not used" since
there currently are no known implementations of them. All levels not
documented here are considered reserved for future use.
The character set identifier applies to all parts of the message,
including the header information and the control lines like origin
and tear line.
FSC-54 documents file formats for mapping files that could be used
for storing character translation data. These are not documented
here because determined by software implementation.
A. Author contact data
Peter Krefting (born Karlsson) Fidonet: 2:203/0.222
Stas Degteff Fidonet: 2:5080/102
FTSC Administrator: 2:2/20, email@example.com
This document is largely based on FSP-1013 by Peter Karlsson, which
in turn was based on FSC-0054 by Duncan McNutt.
Peter Karlsson is now known as Peter Krefting and FSP-1013 has been
filed in the FTSC reference library as FRL-1020.
Significant modifications were submitted by Stas Degteff. Other
FTSC members also provided valuable input.
C. Revision History
Rev.1, 20120325: First release..
--- Fmail, InterMail, Irex
* Origin: http://www.vlist.org (2:280/5555)
Date: Wed, 06.06.12 00:52
ML> make up what?
MK> Depends if you count the systems that can. Potentially
MK> that could be 9000+. I refer to Dale Shipp's original
MK> reply to me as evidence that the system is capable without
MK> the knowledge of the sysop ... or even a CHRS kludge,
MK> nevermind a 'proper' one.
I don't know how on earth you took anything in any of my replies to
imply that my system can handle the gibberish that you are sending. As
I said, it sees it as 2-byte nonsense which makes no sense at all.
Maybe your system is capable of handling it and making sense of it, but
leave the rest of us out of it.
fido_261_1466 (at) comcast (dot) net
... Shipwrecked on Hesperus in Columbia, Maryland. 22:55:31, 05 Jun 2012
___ Blue Wave/DOS v2.30
--- Maximus/NT 3.01
* Origin: Owl's Anchor (1:261/1466)