Ағылшыншамен салыстырыңыз: абзацты басыңыз — түпнұсқа терезеде ашылады. Абзац астындағы EN түймесі оны мәтін ішінде көрсетеді.
Мазмұны
Кіріспе
Мәтін таңбаларын сандармен бейнелеу
Using numbers to represent text characters
Таңба кодтау – графикалық таңбаларға, әсіресе адам тілінің жазба таңбаларына сандарды тағайындау процесі. Бұл процестің арқасында оларды цифрлық компьютерлерді пайдаланып сақтауға, жіберуге және өзгертуге болады. Таңба кодтау құрайтын сандық мәндер "кодтық нүктелер" деп аталады және олар жиынтығы "кодтық кеңістік", "кодтық бет" немесе "таңба картасы" болып табылады. Оптикалық немесе электрлік телеграфпен байланысты алғашқы таңба кодтары жазу тілінде қолданылатын таңбалардың шектеулі жиынтығын ғана көрсете алды, кейде тек үлкен әріптер, сандар және бірнеше тыныш белгілермен ғана шектелді. Қазіргі компьютерлік жүйелердегі деректерді цифрлық түрде бейнелеудің төмен құны, көптеген жазба тілдерінде қолданылатын көптеген таңбаларды көрсете алатын күрделі таңба кодтарына (мысалы, Юникодқа) мүмкіндік береді. Халықаралық стандарттарды қолдана отырып таңба кодтау, мәтінді электрондық түрде бүкіл әлемде алмасуға мүмкіндік береді.
Character encoding is the process of assigning numbers to graphical characters, especially the written characters of human language, allowing them to be stored, transmitted, and transformed using digital computers. The numerical values that make up a character encoding are known as "code points" and collectively comprise a "code space", a "code page", or a "character map". Early character codes associated with the optical or electrical telegraph could only represent a subset of the characters used in written languages, sometimes restricted to upper case letters, numerals and some punctuation only. The low cost of digital representation of data in modern computer systems allows more elaborate character codes (such as Unicode) which represent most of the characters used in many written languages. Character encoding using internationally accepted standards permits worldwide interchange of text in electronic form.
Тарих
Таңба кодтарының тарихы машина арқылы жіберілген таңбалық негіздегі символдық ақпараттың қажеттілігінің қалыптасуын көрсетеді, бұл үшін бір кезде жаңа электрлік құралдар қолданылды. Ең алғашқы кодтар қолмен және жазбаша түрде кодтау және шифрлау жүйелеріне негізделген, мысалы, Бэкон шифры, Брайль, халықаралық теңіз сигналдық жалаулары және қытай телеграф коды үшін қытай таңбаларының 4 таңбалы кодтауы (Ханс Шеллеруп, 1869). Электрлік және электромеханикалық техниканы қабылдаумен бірге, бұл алғашқы кодтар жаңа машиналардың мүмкіндіктері мен шектеулеріне бейімделді. Электрлік түрде берілген ең алғашқы белгілі таңбалық код – Морзе коды, ол 1840 жылдары енгізілді және өзгермелі ұзындықтағы кодтарды жасау үшін төрт «символдан» (қысқа сигнал, ұзақ сигнал, қысқа үзіліс, ұзақ үзіліс) тұратын жүйені қолданды. Морзе кодының кейбір коммерциялық қолданылуы машиналар арқылы болғанымен, ол көбінесе телеграф кілтінде қолмен жасалған және құлақпен оқылған код ретінде қолданылды, сондай-ақ әуесқой радио және авиацияда қолданылады. Көптеген кодтар әр таңба үшін белгілі бір ұзындықта болады немесе белгілі бір ұзындықтағы кодтардың өзгермелі тізбектерінен тұрады (мысалы, Юникод). Таңба кодтау жүйелерінің кең таралған мысалдары – Морзе коды, Бодо коды, Ақпарат алмасудың американдық стандартты коды (ASCII) және Юникод. Юникод – жақсы анықталған және кеңейтілген кодтау жүйесі, ол көптеген бұрынғы таңба кодтауларын ығыстырды, бірақ кодты дамыту жолы бүгінгі күнге дейін жақсы белгілі. Баудот кодын 1870 жылы Эмиль Баудот жасаған, 1874 жылы патенттелген, 1901 жылы Дональд Мюррей өзгерткен және 1930 жылы CCITT тарапынан Халықаралық телеграф әліпбиі №2 (ITA2) ретінде стандартталған. Баудот атауы қате түрде ITA2 және оның көптеген нұсқаларына қолданылды. ITA2 көптеген кемшіліктерге ие болды және көптеген жабдық өндірушілер оны жиі жетілдірді, кейде үйлесімділік мәселелерін тудырды. 1959 жылы АҚШ әскері өзінің Fieldata кодын анықтады, ол АҚШ армиясының Сигнал корпусымен енгізілген алты немесе жеті биттік код. Филдата сол кездегі көптеген қазіргі заманғы мәселелерді шешкенімен (мысалы, машинамен салыстыру үшін реттелген әріптер мен цифрлық кодтар), ол өзінің мақсаттарына жете алмады және қысқа ғұмыр сүрді. 1963 жылы ASCII комитеті (Филдата комитетінің кем дегенде бір мүшесі В. Ф. Лёбберт болған) алғашқы ASCII кодын (X3.4 1963) шығарды, ол қарапайым кодты қолдану арқылы Филдатаның көптеген кемшіліктерін жойды. Көптеген өзгерістер шағын болды, мысалы, белгілі бір сандық диапазондардағы таңбалар жиынтығы. ASCII63 сәтті болды, өнеркәсіпте кеңінен қабылданып, 1967 жылғы ASCII кодын (кіші әріптерді қосып, кейбір «бақылау кодын» түзеткен) ASCII67 де кеңінен қабылданды. ASCII67-нің американдық бағыты еуропалық ECMA 6 стандартында біршама ескерілді. Герман Холлерит 19 ғасырдың соңында халық санағы деректерін талдау үшін перфокарталық деректерді кодтауды ойлап тапты. Бастапқыда әрбір тесіктің орны әртүрлі дерек элементін білдірді, бірақ кейін сандық ақпарат төменгі қатарларды 0-ден 9-ға дейін нөмірлеу арқылы кодталды, ал бағанадағы тесік оның қатар нөмірін білдірді. Кейінірек әр тізбекте бірнеше тесіктерге рұқсат беру арқылы әріптік деректер кодталды. Электромеханикалық кестелеу машиналары карталардың машина арқылы қозғалысына қатысты импульстардың уақытын ішкі түрде көрсетті. IBM электрондық өңдеуге ауысқанда, IBM 603 Electronic Multiplier-мен бастап, перфокарталық кодқа байланысты әртүрлі екілік кодтау схемаларын қолданды. IBM-нің екілік кодталған ондық (BCD) – IBM-нің 1953 жылы 702 және 704 компьютерлерінде, сондай-ақ 7000 және 1400 серияларында, сондай-ақ байланысты шеткі құрылғыларда қолданған алты биттік кодтау схемасы. Сол кездегі перфокарталық кодта тек цифрлар, үлкен әріптер және бірнеше арнайы таңбаларға рұқсат етілгендіктен, алты бит жеткілікті болды. BCD қолданыстағы қарапайым төрт биттік сандық кодтаманы әріптік және арнайы таңбаларды қосуға кеңейтті, оны қазірдің өзінде кеңінен қолданылып жүрген перфокарталық кодтамаға оңай сәйкестендірді. IBM кодтары негізінен IBM жабдықтарымен пайдаланылды; сол дәуірдің басқа компьютерлік өнім берушілерінің өздерінің таңбалық кодтары, көбінесе алты бит, бірақ әдетте IBM жабдықтарында шығарылған таспаларды оқу мүмкіндігі болды. BCD IBM-нің кеңейтілген екілік кодталған ондық алмасу кодын (әдетте EBCDIC деп қысқартылады) алғысы болды, ол 1963 жылы IBM System/360 үшін жасалған сегіз биттік кодтау схемасы, онда үлкен таңбалар жиынтығы, соның ішінде кіші әріптер де болды. 1980 жылдардағы зерттеушілер әмбебап түрде алмастырылатын таңба кодтауларын жасауға тырысқанда, бір жағынан, қосымша таңбаларды орналастыру үшін көбірек биттер қосу қажеттігі сезілді, екінші жағынан, Латын әліпбиінің салыстырмалы түрде кішкентай таңбалар жиынын қолданушылар үшін (компьютер пайдаланушыларының көп бөлігін құраған) осы қосымша биттер сол кездегі қымбат және тапшы есептеу ресурстарын зейінсіз пайдалану болар еді (олар үшін әрқашан нөлге тең болар еді). 1985 жылы орташа жеке компьютер пайдаланушысының дискісінде шамамен 10 мегабайт сақтауға болар еді, және ол көтерме базарда шамамен 250 АҚШ долларына тұрды (жазық саудада сатып алынса, одан да қымбат болды), сондықтан әр битті тиімді пайдалану өте маңызды болды. Соңында табылған компромис – телеграф кодтарына дейін соққан ескі болжамды бұзу, яғни әр таңба әрқашан биттердің нақты тізбесіне сәйкес келуі керек емес. Оның орнына, таңбалар ең алдымен абстрактілі сандар түріндегі әмбебап аралық өкілдікке, атап айтқанда кодтық нүктелерге бейімделеді. Кодтық нүктелер әртүрлі жолдармен және әртүрлі жағдайларға байланысты әртүрлі сандардағы биттермен (кодтық бірліктер) ұсынылатын болады. Кодтық бірліктің ұзындығынан жоғары кодтық нүктелерді кодтау үшін, мысалы, сегіз биттік бірліктер үшін 256-дан жоғары, шешім қабылданушы биттердің тізбесін келесі биттердің жоғарырақ кодтық нүкте ретінде талдануын белгілейтін қашқыш тізбесін енгізу болды.
The history of character codes illustrates the evolving need for machine mediated character based symbolic information over a distance, using once novel electrical means. The earliest codes were based upon manual and hand written encoding and cyphering systems, such as Bacon's cipher, Braille, international maritime signal flags, and the 4 digit encoding of Chinese characters for a Chinese telegraph code (Hans Schjellerup, 1869). With the adoption of electrical and electro mechanical techniques these earliest codes were adapted to the new capabilities and limitations of the early machines. The earliest well known electrically transmitted character code, Morse code, introduced in the 1840s, used a system of four "symbols" (short signal, long signal, short space, long space) to generate codes of variable length. Though some commercial use of Morse code was via machinery, it was often used as a manual code, generated by hand on a telegraph key and decipherable by ear, and persists in amateur radio and aeronautical use. Most codes are of fixed per character length or variable length sequences of fixed length codes (e. g. Unicode). Common examples of character encoding systems include Morse code, the Baudot code, the American Standard Code for Information Interchange (ASCII) and Unicode. Unicode, a well defined and extensible encoding system, has supplanted most earlier character encodings, but the path of code development to the present is fairly well known. The Baudot code, a five bit encoding, was created by Émile Baudot in 1870, patented in 1874, modified by Donald Murray in 1901, and standardized by CCITT as International Telegraph Alphabet No. 2 (ITA2) in 1930. The name baudot has been erroneously applied to ITA2 and its many variants. ITA2 suffered from many shortcomings and was often improved by many equipment manufacturers, sometimes creating compatibility issues. In 1959 the U. S. military defined its Fieldata code, a six or seven bit code, introduced by the U. S. Army Signal Corps. While Fieldata addressed many of the then modern issues (e. g. letter and digit codes arranged for machine collation), it fell short of its goals and was short lived. In 1963 the first ASCII code was released (X3.4 1963) by the ASCII committee (which contained at least one member of the Fieldata committee, W. F. Leubbert), which addressed most of the shortcomings of Fieldata, using a simpler code. Many of the changes were subtle, such as collatable character sets within certain numeric ranges. ASCII63 was a success, widely adopted by industry, and with the follow up issue of the 1967 ASCII code (which added lower case letters and fixed some "control code" issues) ASCII67 was adopted fairly widely. ASCII67's American centric nature was somewhat addressed in the European ECMA 6 standard. Herman Hollerith invented punch card data encoding in the late 19th century to analyze census data. Initially, each hole position represented a different data element, but later, numeric information was encoded by numbering the lower rows 0 to 9, with a punch in a column representing its row number. Later alphabetic data was encoded by allowing more than one punch per column. Electromechanical tabulating machines represented date internally by the timing of pulses relative to the motion of the cards through the machine. When IBM went to electronic processing, starting with the IBM 603 Electronic Multiplier, it used a variety of binary encoding schemes that were tied to the punch card code. IBM's Binary Coded Decimal (BCD) was a six bit encoding scheme used by IBM as early as 1953 in its 702 and 704 computers, and in its later 7000 Series and 1400 series, as well as in associated peripherals. Since the punched card code then in use only allowed digits, upper case English letters and a few special characters, six bits were sufficient. BCD extended existing simple four bit numeric encoding to include alphabetic and special characters, mapping it easily to punch card encoding which was already in widespread use. IBMs codes were used primarily with IBM equipment; other computer vendors of the era had their own character codes, often six bit, but usually had the ability to read tapes produced on IBM equipment. BCD was the precursor of IBM's Extended Binary Coded Decimal Interchange Code (usually abbreviated as EBCDIC), an eight bit encoding scheme developed in 1963 for the IBM System/360 that featured a larger character set, including lower case letters. In trying to develop universally interchangeable character encodings, researchers in the 1980s faced the dilemma that, on the one hand, it seemed necessary to add more bits to accommodate additional characters, but on the other hand, for the users of the relatively small character set of the Latin alphabet (who still constituted the majority of computer users), those additional bits were a colossal waste of then scarce and expensive computing resources (as they would always be zeroed out for such users). In 1985, the average personal computer user's hard disk drive could store only about 10 megabytes, and it cost approximately US$250 on the wholesale market (and much higher if purchased separately at retail), so it was very important at the time to make every bit count. The compromise solution that was eventually found and was to break the assumption (dating back to telegraph codes) that each character should always directly correspond to a particular sequence of bits. Instead, characters would first be mapped to a universal intermediate representation in the form of abstract numbers called code points. Code points would then be represented in a variety of ways and with various default numbers of bits per character (code units) depending on context. To encode code points higher than the length of the code unit, such as above 256 for eight bit units, the solution was to implement variable length encodings where an escape sequence would signal that subsequent bits should be parsed as a higher code point.
Терминология
Бейресми түрде "көрініс кодтауы", "көрініс картасы", "көрініс жинағы" және "кодтық бет" терминдері көбінесе бір-бірін алмастырып қолданылады. Тарихи тұрғыдан алғанда, бір стандарт көріністер тізімін және олардың кодтық бірліктер ағынына қалай кодталатынын анықтаған, әдетте бір көрініс бір кодтық бірлікпен. Дегенмен, көбірек күрделі көрініс кодтаулардың пайда болуына байланысты, бұл терминдердің арасындағы айырмашылық маңызды болды. Көрініс – мағыналық құндылығы бар мәтіннің ең кішкентай бірлігі. Көрініс жинағы – мәтінді бейнелеу үшін қолданылатын элементтердің жиынтығы. Тізім жабық болуы мүмкін, яғни жаңа стандартты жасамайынша қосымшаларға рұқсат берілмейді (ASCII және ISO 8859 сериясының көп бөлігі сияқты); немесе ол ашық болуы мүмкін, қосымшаларға мүмкіндік береді (Unicode және шектеулі түрде Windows кодтық беттері сияқты). Microsoft, SAP және Oracle Corporation сияқты басқа да жеткізушілер өздерінің кодтық беттері жиынтықтарын жариялады; ең танымал кодтық беттер жиынтықтары – "Windows" (Windows 1252 негізінде) және "IBM"/"DOS" (кодтық бет 437 негізінде). Стандартта нақты бет нөмірін көрсетуге болмаса да, көптеген көрініс кодтаулар әлі де олардың кодтық бет нөмірімен аталады; сондай-ақ, "кодтық бет" термині көрініс кодтауларын жалпылама атау үшін жиі қолданылады. "Кодтық бет" термині Unix немесе Linux жүйелерінде қолданылмайды, онда "charmap" артықшылыққа ие, әдетте локальдердің кең контекстінде. IBM-нің Көрініс деректерін ұсыну архитектурасы (CDRA) кодталған көрініс жинағы идентификаторларымен (CCSID) белгіленген объектілерді анықтайды, олардың әрқайсысы әртүрліше "charset", "көрініс жинағы", "кодтық бет" немесе "CHARMAP" деп аталады.
Informally, the terms "character encoding", "character map", "character set" and "code page" are often used interchangeably. Historically, the same standard would specify a repertoire of characters and how they were to be encoded into a stream of code units — usually with a single character per code unit. However, due to the emergence of more sophisticated character encodings, the distinction between these terms has become important. A character is a minimal unit of text that has semantic value. A character set is a collection of elements used to represent text. The repertoire may be closed, meaning that 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 Windows code pages). Other vendors, including Microsoft, SAP, and Oracle Corporation, also published their own sets of code pages; the most well known code page suites are "Windows" (based on Windows 1252) and "IBM"/"DOS" (based on code page 437). Despite no longer referring to specific page numbers in a standard, many character encodings are still referred to by their code page number; likewise, the term "code page" is often still used to refer to character encodings in general. The term "code page" is not used in Unix or Linux, where "charmap" is preferred, usually in the larger context of locales. IBM's Character Data Representation Architecture (CDRA) designates entities with coded character set identifiers (CCSIDs), each of which is variously called a "charset", "character set", "code page", or "CHARMAP".
Кейіпкерлер
Кейіпкерді не құрайтыны әр түрлі таңба кодтамаларында әртүрлі болады. Мысалы, диакритикалық таңбалар үшін оларды кодтаудың екі әртүрлі тәсілі бар: оларды бір біріктірілген таңба ретінде (алдын ала құрастырылған таңба деп аталады) немесе бір глифті құрайтын жеке таңбалар ретінде кодтауға болады. Біріншісі мәтінді өңдеу жүйесін жеңілдетеді, ал екіншісі мәтінде кез келген таңба/диакритика комбинациясын пайдалануға мүмкіндік береді. Лигатуралар да ұқсас мәселелер тудырады. Глифтердің нұсқаларын қалай өңдеу керектігі – нақты таңба кодтамасын құрастырғанда жасалуы тиіс таңдау. Араб және еврей жазу жүйелері әртүрлі контексттерде әртүрлі жолдармен біріктірілген графемаларды қамтуы керек, бірақ олар бірдей семантикалық мәнді білдіреді.
Exactly what constitutes a character varies between character encodings. For example, for letters with diacritics, there are two distinct approaches that can be taken to encode them: they can be encoded either as a single unified character (known as a precomposed character), or as separate characters that combine into a single glyph. The former simplifies the text handling system, but the latter allows any letter/diacritic combination to be used in text. Ligatures pose similar problems. Exactly how to handle glyph variants is a choice that must be made when constructing a particular character encoding. Some writing systems, such as Arabic and Hebrew, need to accommodate things like graphemes that are joined in different ways in different contexts, but represent the same semantic character.