- "Special characters" redirects here. For the use of special characters on Wikipedia, see Wikipedia:Special characters.
A character encoding consists of a code that pairs a sequence of characters from a given character set (sometimes referred to as code page) with something else, such as a sequence of natural numbers, octets or electrical pulses, in order to facilitate the storage of text in computers and the transmission of text through telecommunication networks. In Information theory, a code is a function mapping an alphabet to non-negative real numbers satisfying a generalization of Kraft's inequality. For other uses see Character. In Computer and machine-based Telecommunications terminology a character is a unit of Code page is the traditional IBM term used to map a specific set of characters to numerical Code point values. A number is an Abstract object, tokens of which are Symbols used in Counting and measuring. In Computing, an octet is a grouping of eight Bits Octet, with the only exception noted below always refers to an entity having exactly eight Computer data storage, often called storage or memory, refers to Computer components devices and recording media that retain digital For other uses see Character. In Computer and machine-based Telecommunications terminology a character is a unit of A computer is a Machine that manipulates data according to a list of instructions. Common examples include Morse code, which encodes letters of the Latin alphabet as series of long and short depressions of a telegraph key; and ASCII, which encodes letters, numerals, and other symbols, as integers. Morse code is a Character encoding for transmitting telegraphic information using standardized sequences of short and long elements to represent the letters numerals Telegraph key, also known as a Morse key, are generic terms for any switching device used primarily to send Morse code. American Standard Code for Information Interchange ( ASCII) The integers (from the Latin integer, literally "untouched" hence "whole" the word entire comes from the same origin but via French
In earlier days of computing, the introduction of coded character sets such as ASCII (1963) and EBCDIC (1964) began the process of standardization. American Standard Code for Information Interchange ( ASCII) Extended Binary Coded Decimal Interchange Code ( EBCDIC) is an 8- Bit Character encoding ( Code page) used on IBM mainframe Operating The limitations of such sets soon became apparent, and a number of ad-hoc methods developed to extend them. Ad hoc is a Latin phrase which means "for this [ Purpose ]" The need to support multiple writing systems (Languages), including the CJK family of East Asian scripts, required support for a far larger number of characters and demanded a systematic approach to character encoding rather than the previous ad hoc approaches. A writing system is a type of Symbolic system used to represent elements or statements expressible in Language. CJK is a collective term for Chinese, Japanese, and Korean, which constitute the main East Asian languages.
Simple character sets
Conventionally character set and character encoding were considered synonymous, as the same standard would specify both what characters were available and how they were to be encoded into a stream of code units (usually with a single character per code unit). For historical reasons, MIME and systems based on it use the term charset to refer to the complete system for encoding a sequence of characters into a sequence of octets. Multipurpose Internet Mail Extensions ( MIME) is an Internet standard that extends the format of e-mail to support text in Character
Modern encoding model
Unicode and its parallel standard, ISO 10646 Universal Character Set, which together constitute the most modern character encoding, broke away from this idea, and instead separated the ideas of what characters are available, their numbering, how those numbers are encoded as a series of "code units" (limited-size numbers), and finally how those units are encoded as a stream of octets (bytes). In Computing, Unicode is an Industry standard allowing Computers to consistently represent and manipulate text expressed in most of the world's The Universal Character Set (UCS defined by the ISO / IEC 10646 International Standard, is a standard set of characters upon which The idea behind this decomposition is to establish a universal set of characters that can be encoded in a variety of ways. To correctly describe this model needs more precise terms than "character set" and "character encoding". The terms used in the modern model follow:
A character repertoire is the full set of abstract characters that a system supports. The repertoire may be closed, that is no additions are allowed without creating a new standard (as is the case with ASCII and most of the ISO-8859 series), or it may be open, allowing additions (as is the case with Unicode and to a limited extent the Windows code pages). Windows code pages are sets of characters or Code pages (known as Character encodings in other operating systems used in Microsoft Windows systems The characters in a given repertoire reflect decisions that have been made about how to divide writing systems into linear information units. The basic variants of the Latin, Greek, and Cyrillic alphabets, can be broken down into letters, digits, punctuation, and a few special characters like the space, which can all be arranged in simple linear sequences that are displayed in the same order they are read. The Greek alphabet (Ελληνικό αλφάβητο is a set of twenty-four letters that has been used to write the Greek language since the late 9th or early The Cyrillic alphabet (səˈrɪlɪk also called azbuka, from the old name of the first two letters is actually a family of Alphabets, subsets of which are used by Even with these alphabets however diacritics pose a complication: they can be regarded either as part of a single character containing a letter and diacritic (known in modern terminology as a precomposed character), or as separate characters. A diacritic ( also called a diacritic or diacritical mark, point, or sign, is a small sign added to a letter to alter pronunciation The former allows a far simpler text handling system but the latter allows any letter/diacritic combination to be used in text. Other writing systems, such as Arabic and Hebrew, are represented with more complex character repertoires due to the need to accommodate things like bidirectional text and glyphs that are joined together in different ways for different situations. A glyph is an element of writing Two or more glyphs representing the same symbol whether interchangeable or context-dependent are called Allographs the abstract unit they
A coded character set specifies how to represent a repertoire of characters using a number of non-negative integer codes called code points. For example, in a given repertoire, a character representing the capital letter "A" in the Latin alphabet might be assigned to the integer 65, the character for "B" to 66, and so on. A complete set of characters and corresponding integers is a coded character set. Multiple coded character sets may share the same repertoire; for example ISO-8859-1 and IBM code pages 037 and 500 all cover the same repertoire but map them to different codes. ISO 8859-1, more formally cited as ISO/IEC 8859-1 is part 1 of ISO/IEC 8859, a standard Character encoding of the Latin alphabet. In a coded character set, each code point only represents one character.
A character encoding form (CEF) specifies the conversion of a coded character set's integer codes into a set of limited-size integer code values that facilitate storage in a system that represents numbers in binary form using a fixed number of bits (i. e. practically any computer system). For example, a system that stores numeric information in 16-bit units would only be able to directly represent integers from 0 to 65,535 in each unit, but larger integers could be represented if more than one 16-bit unit could be used. This is what a CEF accommodates: it defines a way of mapping single code point from a range of, say, 0 to 1. 4 million, to a series of one or more code values from a range of, say, 0 to 65,535.
The simplest CEF system is simply to choose large enough units that the values from the coded character set can be encoded directly (one code point to one code value). This works well for coded character sets that fit in 8 bits (as most legacy non-CJK encodings do) and reasonably well for coded character sets that fit in 16 bits (such as early versions of Unicode). However, as the size of the coded character set increases (e. g. modern Unicode requires at least 21 bits/character), this becomes less and less efficient, and it is difficult to adapt existing systems to use larger code values. Therefore, most systems working with later versions of Unicode use either UTF-8, which maps Unicode code points to variable-length sequences of octets, or UTF-16, which maps Unicode code points to variable-length sequences of 16-bit words. UTF-8 (8- Bit UCS / Unicode Transformation Format) is a variable-length Character encoding for Unicode. In Computing, UTF-16 (16- Bit Unicode Transformation Format is a variable-length Character encoding for Unicode, capable of encoding
Next, a character encoding scheme (CES) specifies how the fixed-size integer codes should be mapped into an octet sequence suitable for saving on an octet-based file system or transmitting over an octet-based network. With Unicode, a simple character encoding scheme is used in most cases, simply specifying whether the bytes for each integer should be in big-endian or little-endian order (even this isn't needed with UTF-8). However, there are also compound character encoding schemes, which use escape sequences to switch between several simple schemes (such as ISO 2022), and compressing schemes, which try to minimise the number of bytes used per code unit (such as SCSU, BOCU, and Punycode). ISO 2022, more formally ISO/IEC 2022 "Information Technology—Character code structure and extension techniques" is an ISO standard (equivalent to the The Standard Compression Scheme for Unicode (SCSU is a Unicode Technical Standard for reducing the number of Bytes needed to represent Unicode text especially BOCU-1 is a MIME compatible Unicode compression scheme BOCU stands for B inary O rdered C ompression for U nicode Punycode is a Computer programming encoding syntax by which a Unicode string of characters can be translated into the more-limited character set permitted
Finally, there may be a higher level protocol which supplies additional information that can be used to select the particular variant of a Unicode character, particularly where there are regional variants that have been 'unified' in Unicode as the same character. In Computing, Unicode is an Industry standard allowing Computers to consistently represent and manipulate text expressed in most of the world's An example is the XML attribute xml:lang.
History of character encodings
Early binary repertoires:
Popular character encodings
- ISO 646
- EBCDIC
- ISO 8859:
- ISO 8859-1 Western Europe
- ISO 8859-2 Western and Central Europe
- ISO 8859-3 Western Europe and South European ( Turkish, Maltese plus Esperanto )
- ISO 8859-4 Western Europe and Baltic countries ( Lithuania, Estonia and Lapp )
- ISO 8859-5 Cyrillic alphabet
- ISO 8859-6 Arabic
- ISO 8859-7 Greek
- ISO 8859-8 Hebrew
- ISO 8859-9 Western Europe with amended Turkish character set
- ISO 8859-10 Western Europe with rationalised character set for Nordic languages, including complete Icelandic set. The I Ching ( Wade-Giles) or “Yì Jīng” ( Pinyin) also called “Classic of Changes” or “Book of Changes” is one of the oldest of the The sixteen figures of Western Geomancy (divination by signs in the earth are Via The figure resembles a road or path The Braille system is a method that is widely used by blind people to read and write ISO 646 is an ISO standard that since 1972 has specified a 7- Bit character code from which several national standards are derived American Standard Code for Information Interchange ( ASCII) Extended Binary Coded Decimal Interchange Code ( EBCDIC) is an 8- Bit Character encoding ( Code page) used on IBM mainframe Operating Code page 930 (abbreviated as CP930, also known as Japanese EBCDIC is a code page created by IBM for representation of Japanese text ISO/IEC 8859 is a joint ISO and IEC standard for 8-bit Character encodings for use by computers ISO 8859-1, more formally cited as ISO/IEC 8859-1 is part 1 of ISO/IEC 8859, a standard Character encoding of the Latin alphabet. ISO 8859-2, more formally cited as ISO/IEC 8859-2 or less formally as Latin-2, is part 2 of ISO/IEC 8859, a standard Character encoding defined by ISO 8859-3, also known as Latin-3 or "South European" is an 8-bit Character encoding, part of the ISO 8859 standard ISO 8859-4, also known as Latin-4 or "North European" is an 8-bit Character encoding, part of the ISO 8859 standard ISO 8859-5, also known as Cyrillic is an 8-bit Character encoding, part of the ISO 8859 standard ISO 8859-6, also known as Arabic, is an 8-bit Character encoding, part of the ISO 8859 standard ISO 8859-7, also known as Greek, is an 8-bit Character encoding, part of the ISO 8859 standard ISO 8859-8, more formally cited as ISO/IEC 8859-8 (but not as Latin-8! is part 8 of ISO/IEC 8859, a standard Character encoding ISO 8859-9, also known as Latin-5 or "Turkish" is an 8-bit Character encoding, part of the ISO 8859 standard ISO 8859-10, also known as Latin-6, is an 8-bit Character encoding, part of the ISO 8859 standard
- ISO 8859-11 Thai
- ISO 8859-13 Baltic languages plus Polish
- ISO 8859-14 Celtic languages ( Irish Gaelic, Scottish, Welsh )
- ISO 8859-15 Added the Euro sign and other rationalisations to ISO 8859-1
- ISO 8859-16 Central European languages ( Polish, Czech, Slovenian, Slovak, Hungarian, Albanian, Romanian, German, Italian )
- CP437, CP737, CP850, CP852, CP855, CP857, CP858, CP860, CP861, CP863, CP865, CP866, CP869
- MS-Windows character sets:
- Mac OS Roman
- KOI8-R, KOI8-U, KOI7
- MIK
- Cork or T1
- ISCII
- VISCII
- Big5 (a more famous variant is Microsoft Code page 950)
- Guobiao
- Shift JIS for Japanese (Microsoft Code page 932)
- EUC-KR for Korean (Microsoft Code page 949)
- ISO-2022 and EUC for CJK character sets
- Unicode (and subsets thereof, such as the 16-bit 'Basic Multilingual Plane'). ISO 8859-11 is an 8-bit Character encoding, part of the ISO 8859 standard ISO 8859-13, also known as Latin-7 or "Baltic Rim" is an 8-bit Character encoding, part of the ISO 8859 standard ISO 8859-14, also known as Latin-8 or "Celtic" is an 8-bit Character encoding, part of the ISO 8859 standard ISO 8859-15 is part 15 of ISO 8859, a standard Character encoding defined by International Organization for Standardization. ISO 8859-16, also known as Latin-10 or "South-Eastern European" is an 8-bit Character encoding, part of the ISO 8859 standard IBM PC or MS-DOS Code page 437, often abbreviated CP437 and also known as DOS-US, OEM-US or sometimes misleadingly referred Code page 737 (CP 737 IBM 737 OEM 737 is a Code page to be used under MS-DOS to write Greek language. Code page 850 is a Code page that was used in western Europe under systems such as DOS. Code page 852 (CP 852 IBM 852 OEM 852 is a Code page to be used under MS-DOS with Central European languages that use Latin script (such as CP855 is a Cyrillic Code page to be used under MS-DOS. This code page is not used much Code page 857 (CP 857 IBM 857 OEM 857 is a Code page to be used under MS-DOS to write Turkish. Code page 858 (CP 858 IBM 858 OEM 858 is a Code page to be used under MS-DOS to write Western European languages Code page 860 (CP 860 IBM 860 OEM 860 is a Code page to be used under MS-DOS to write Portuguese language. Code page 861 (CP 861 IBM 861 OEM 861 is a Code page to be used under MS-DOS to write the Icelandic language (as well as other Nordic languages Code page 863 (CP 863 IBM 863 OEM 863 is a Code page to be used under MS-DOS to write French language (mainly in Canada) Code page 865 (CP 865 IBM 865 OEM 865 is a Code page to be used under MS-DOS with Nordic languages (except Icelandic, for which CP861 is used CP866 is a Cyrillic Code page to be used with MS-DOS. It is based on the "alternative character set" of GOST 19768-87 Code page 869 (CP 869 IBM 869 OEM 869 is a Code page to be used under MS-DOS to write Greek language. Code page is the traditional IBM term used to map a specific set of characters to numerical Code point values. Windows-1250 is a Code page used under Microsoft Windows to represent texts in Central European and Eastern European languages that use Latin Windows-1251 is a popular 8-bit Character encoding, designed to cover languages that use the Cyrillic alphabet such as Russian, Bulgarian and Windows-1252 (also known as WinLatin1) is a Character encoding of the Latin alphabet, used by default in the legacy components of Microsoft Windows Windows-1253 is a Windows Code page used to write modern Greek (but not polytonic Greek) Windows-1254 is a Code page used under Microsoft Windows to write Turkish. Windows-1255 is a Codepage used under Microsoft Windows to write Hebrew. Windows-1256 is a Code page used to write Arabic (and possibly some other languages that use Arabic script) under Microsoft Windows. Windows-1257 (Windows Baltic is a Code page used to write Estonian (although that can also be written with Windows-1252) Latvian and Lithuanian Windows-1258 is a Codepage used in Microsoft Windows to represent Vietnamese texts Mac OS Roman is a Character encoding primarily used by Mac OS to represent text KOI8-R is an 8-bit Character encoding, designed to cover Russian, which uses the Cyrillic alphabet KOI8-U is an 8-bit Character encoding, designed to cover Ukrainian, which uses the Cyrillic alphabet KOI7 is a 7-bit Character encoding, designed to cover Russian, which uses the Cyrillic alphabet MIK is a Cyrillic Code page to be used with MS-DOS. It is based on the character set used in the Bulgarian Pravetz 16 IBM PC compatible system The Cork or T1 encoding is a Character encoding. It is named after city of Cork in Ireland, where during a TeX Users Group (TUG conference Indian Script Code for Information Interchange ( ISCII) is a coding scheme for representing various writing systems of India. The Vietnamese Standard Code for Information Interchange ( VISCII) is a Character set comprising the Vietnamese alphabet, Punctuation, and other Big-5 or Big5 is a character encoding method used in Taiwan, Hong Kong and Macau for Traditional Chinese characters Code page 950 is Microsoft's implementation of the defacto standard Big5. The Hong Kong Supplementary Character Set ( commonly abbreviated to HKSCS) is a set of Chinese characters -- 4702 in total in the initial release -- used exclusively GB2312 is the registered internet name for a key official Character set of the People's Republic of China, used for simplified Chinese characters GBK is an extension of the GB2312 Character set for simplified Chinese characters used in the People's Republic of China. GBK is an extension of the GB2312 Character set for simplified Chinese characters used in the People's Republic of China. GB18030 is the registered Internet name for the official Character set of the People's Republic of China (PRC superseding GB2312. Code page 932 (abbreviated as CP932, also known by the IANA name Windows-31J) is Microsoft's extension of Shift JIS to include NEC Extended Unix Code ( EUC) is a multibyte Character encoding system used primarily for Japanese, Korean, and Simplified Chinese. Code page 949 is Microsoft 's implementation that appears similar to EUC-KR. ISO 2022, more formally ISO/IEC 2022 "Information Technology—Character code structure and extension techniques" is an ISO standard (equivalent to the Extended Unix Code ( EUC) is a multibyte Character encoding system used primarily for Japanese, Korean, and Simplified Chinese. CJK is a collective term for Chinese, Japanese, and Korean, which constitute the main East Asian languages. In Computing, Unicode is an Industry standard allowing Computers to consistently represent and manipulate text expressed in most of the world's See UTF-8
- ANSEL or ISO/IEC 6937
Character conversion tools
Cross-platform:
- iconv – program and standardized API to convert encodings
- convert_encoding. UTF-8 (8- Bit UCS / Unicode Transformation Format) is a variable-length Character encoding for Unicode. ANSEL, American National Standard for Extended Latin Alphabet Coded Character Set for Bibliographic Use is a Character set used in text encoding and is also known as ISO/IEC 6937 is a multibyte extension of ASCII, or rather of ISO/IEC 646 -IRV developed in common with ITU-T (then CCITT) for telematic services In computing cross-platform (also known as multi-platform) is a term used to refer to Computer software or computing methods and concepts that are implemented iconv is a Computer program and a standardized API used to convert between different Character encodings iconv API The iconv API is the py – Python based utility to convert text files between arbitrary encodings and line endings. [1]
- decodeh. py - algorithm and module to heuristically guess the encoding of a string [2]
Linux:
- recode – convert file contents from one encoding to another [3]
- utrac – convert file contents from one encoding to another. Linux (commonly pronounced ˈlɪnəks [4]
- cstocs – convert file contents from one encoding to another
- convmv – convert a filename from one encoding to another. [5]
- enca – analyzes encodings for given text files/[6]
Windows:
- cscvt – character set conversion tool[7]
See also
- Category:Character encoding — articles related to character encoding in general
- Category:Character sets — articles detailing specific character encodings
- Code page — various character set encodings used by Microsoft
- Windows code page — various character set encodings used by Microsoft Windows
- Mojibake — character set mismap. Microsoft Windows is a series of Software Operating systems and Graphical user interfaces produced by Microsoft. Code page is the traditional IBM term used to map a specific set of characters to numerical Code point values. Windows code pages are sets of characters or Code pages (known as Character encodings in other operating systems used in Microsoft Windows systems Mojibake is the happenstance of incorrect unreadable characters (garbage characters shown when Computer software fails to render a text correctly according to its associated
References
- ^ Homepage of Michael Goerz - convert_encoding.py
- ^ decodeh - heuristically decode a string or text file
- ^ recode - GNU Project - Free Software Foundation (FSF)
- ^ Utrac Homepage
- ^ convmv - converts filenames from one encoding to another
- ^ Extremely Naive Charset Analyser
- ^ Character Set Converter
External links
Dictionary
character encoding
-noun
- (computing) A well-defined correspondence between characters and numbers used to represent them.
© 2009 citizendia.org; parts available under the terms of GNU Free Documentation License, from http://en.wikipedia.org
network: | |