manpagez: man pages & more
info gawk
Home | html | info | man

File: gawk.info,  Node: Bytes vs. Characters,  Next: Using extensions,  Up: Wc Program

11.2.7.1 Modern Character Sets
..............................

In the early days of computing, single bytes were used for storing
characters.  The most common character sets were ASCII and EBCDIC, which
each provided all the English upper- and lowercase letters, the 10
Hindu-Arabic numerals from 0 through 9, and a number of other standard
punctuation and control characters.

   Today, the most popular character set in use is Unicode (of which
ASCII is a pure subset).  Unicode provides tens of thousands of unique
characters (called "code points") to cover most existing human languages
(living and dead) and a number of nonhuman ones as well (such as Klingon
and J.R.R. Tolkien's elvish languages).

   To save space in files, Unicode code points are "encoded", where each
character takes from one to four bytes in the file.  UTF-8 is possibly
the most popular of such "multibyte encodings".

   The POSIX standard requires that 'awk' function in terms of
characters, not bytes.  Thus in 'gawk', 'length()', 'substr()',
'split()', 'match()' and the other string functions (*note String
Functions::) all work in terms of characters in the local character set,
and not in terms of bytes.  (Not all 'awk' implementations do so,
though).

   There is no standard, built-in way to distinguish characters from
bytes in an 'awk' program.  For an 'awk' implementation of 'wc', which
needs to make such a distinction, we will have to use an external
extension.

© manpagez.com 2000-2025
Individual documents may contain additional copyright information.