charmap - Defines character symbols as character encodings
The character set description (charmap) file defines character symbols as
character encodings. This file is the source file for a coded character
set, or codeset. All supported codesets have the Portable Character Set
(PCS) as a proper subset. The PCS consists of the following character sym-
bols (listed by their standardized symbolic names) and hexadecimal encod-
Symbol Name Hexadecimal Encoding
The charmap file has the following components:
+ An optional special symbolic name declarations section
Each declaration in this section consists of a special symbolic name,
followed by one or more space or tab characters, and a value. The
following list describes the special symbolic names that you can
include in the declarations section:
Specifies the name of the codeset for which the charmap file is
defined. This value determines the value returned by the
nl_langinfo (CODESET) subroutine. If <<code_set_name>> is not
declared, the name for the Portable Character Set is used.
Specifies the maximum number of bytes in a character for the
codeset. Valid values are 1 to 4. The default value is 1.
Specifies the minimum number of bytes in a character for the
codeset. Since all supported codesets have the Portable Character
Set as a proper subset, this value must be 1.
Specifies the escape character that indicates encodings in hexade-
cimal or octal notation. The default value is a \ (backslash).
Specifies the character used to indicate a comment within a char-
map file. The default value is a # (number sign).
+ The CHARMAP section header
This header marks the beginning of the section that associates charac-
ter symbols with encodings.
+ Mapping statements for characters in the codeset
Each statement lists a symbolic name for a character and its associ-
ated encoding. The format of a mapping statement is:
A symbolic name begins with the << (left-angle bracket) character and
ends with the >> (right-angle bracket) character. The characters for
char_symbol (between << and >>) can be any characters from the Portable
Character Set, except for control and space characters. The right-
angle bracket (>>) can occur in char_symbol as well in the last posi-
tion of the name. You must precede all >> characters but the last one
with the escape character (as specified by the <<escape_char>> special
The format of a mapping statement is:
An encoding is specified as one or more character constants, with the
maximum number of character constants specified by the <<mb_cur_max>>
special symbolic name. The encoding may be listed as decimal, octal,
or hexadecimal constants with the following formats:
\xxx, where x is a hexadecimal digit
\ooo or \oo, where o is an octal digit
\dddd or \ddd, where d is a decimal digit
Some examples of character symbol definitions are the following:
<A> \d65 #decimal constant
<B> \x42 #hexadecimal constant
<j10101> \x81\xA1 #multiple hexadecimal constants
A range of symbolic names and corresponding encoded values may also be
defined, where the nonnumeric prefix for each symbolic name is common,
and the numeric portion of the second symbolic name is equal to or
greater than the numeric portion of the first symbolic name. In this
format, a symbolic name value consists of zero or more nonnumeric
characters followed by an integer of one or more decimal digits.
This format defines a series of symbolic names. For example, the
string <<j0101>>...<<j0104>> is interpreted as the <<j0101>>, <<j0102>>,
<<j0103>>, and <<j0104>> symbolic names, in that order.
In statements defining ranges of symbolic names, the encoded value
listed is the value for the first symbolic name in the range. Subse-
quent symbolic names have encoded values in increasing order. For
The preceding statement is interpreted as follows:
Although you cannot assign multiple encodings to one symbolic name,
you can create multiple names for one encoded value. This is allowed
because some characters have several common names. For example, the
"." character is called a period in some parts of the world, and a
full stop in others. Both names may appear in the charmap. For
If used, comments must begin with the character specified by the
<<comment_char>> special symbolic name. When an entire line is a com-
ment, you must specify <<comment_char>> in the first column of the line.
+ The END CHARMAP trailer
This entry denotes the end of character map statements.
The following example is a portion of a possible charmap file:
Character set description (charmap) source files for sup-
ported locales. The /usr/lib/nls/loc/charmaps directory does
not exist when source files for installed locales are not
Commands: locale(1), localedef(1).