Ағылшыншамен салыстырыңыз: абзацты басыңыз — түпнұсқа терезеде ашылады. Абзац астындағы EN түймесі оны мәтін ішінде көрсетеді.
Мазмұны
Кіріспе
Юникод техникалық стандарты
Unicode Technical Standard
Юникод үшін стандарттық қысу схемасы (SCSU) – Юникод мәтінін көрсету үшін қажетті байттар санын азайтуға арналған Юникод техникалық стандарты, әсіресе егер мәтінде бір немесе бірнеше тілге тән таңбалар блогынан көбінесе таңбалар қолданылса. Бұл 128–255 диапазонындағы мәндерді 128 таңбалық белгілі бір блоктардағы ығысуларға динамикалық түрде бейнелеу арқылы жүзеге асырылады. Кодтаушының бастапқы жағдайлары ASCII және ISO 8859-1 стандарттарындағы NULL, TAB, CR және LF басқару кодтарын қамтымайтын бар тізбектерді SCSU тізбектері ретінде қарастыруға мүмкіндік береді. Көптеген әріптер Юникод кодтық нүктелерінің тікелей блоктарында орналасқандықтан, кішкентай әріптерді және ASCII тыныш белгілерін немесе негізгі әріптер терезесіне сәйкес келетін тыныш белгілерін пайдаланатын мәтіндерді әр таңбаға бір байттан кодтауға болады (қосымша бастапқы жүктемеден басқа, ол көптеген тілдер үшін көбінесе 1 байтты құрайды), ал қалған тыныш белгілерді символ бойынша 2 байттан кодтауға болады. SCSU сондай-ақ әріптік емес тілдерді өңдеу үшін ішкі түрде UTF-16-ға ауыса алады.
The Standard Compression Scheme for Unicode (SCSU) is a Unicode Technical Standard for reducing the number of bytes needed to represent Unicode text, especially if that text uses mostly characters from one or a small number of per language character blocks. It does so by dynamically mapping values in the range 128–255 to offsets within particular blocks of 128 characters. The initial conditions of the encoder mean that existing strings in ASCII and ISO 8859 1 that do not contain C0 control codes other than NULL TAB CR and LF can be treated as SCSU strings. Since most alphabets do reside in blocks of contiguous Unicode codepoints, texts that use small alphabets and either ASCII punctuation or punctuation that fits within the window for the main alphabet can be encoded at one byte per character (plus setup overhead, which for common languages is often only 1 byte), most other punctuation can be encoded at 2 bytes per symbol through non locking shifts. SCSU can also switch to UTF 16 internally to handle non alphabetic languages.
Тарих және қолданылуы
Reuters бастапқыда SCSU-ды, кейіннен Unicode үшін Reuters Compression Scheme ретінде RCSU деп атады. Бастапқыда Unicode консорциумы оны әріптік кодтау деп қарастырды, бірақ 1999 жылы өз шешімін өзгертті: ол әлі де деректерді жіберу кодтау синтаксисі болып саналса да, бірқатар уақыт бойы әртүрлі компрессорлар бірдей мәтін үшін әртүрлі нәтижелер бере алатындықтан, әріптік кодтау емес деп есептелді. Дегенмен, 2004 жылы бұл шешім кері қайтарылды және қазір SCSU қарапайым немесе күрделі әріптік кодтауларға қарағанда, сығымдауды қолданатын әріптік кодтау схемасы болып саналады. Роман Чибора (GNU Unifont авторы) декомпрессорды жазды. IBM-нің декомпрессоры International Components for Unicode құрамында, Java тілінде жазылған компрессормен бірге табылсады. TR6-ға қосымша ретінде қарапайым анықтамалық кодектер қолжетімді. Symbian OS, ұялы телефондар және басқа ұялы құрылғылар үшін жасалған операциялық жүйе, жолдарды сериалдау үшін SCSU-ды пайдаланады. SQL Server 2008 R2, nchar(n) және nvarchar(n) бағандарында сақталған Unicode мәндерін (UCS-2 кодтауындағы жолдардың мәні) сығымдау үшін SCSU-ды қолданады, бұл деректер тіліне байланысты 15%-тан 50%-ға дейін орынды үнемдеуге мүмкіндік береді (ал UTF-8 тек Unicode-тың ASCII жиынтығы үшін 50%-дық қысқартуды қамтамасыз етеді).
Reuters originally developed SCSU, then under the name RCSU for Reuters Compression Scheme for Unicode. At first the Unicode Consortium considered it to be a character encoding, but in 1999 changed its mind: although it was still considered a transfer encoding syntax, for a while it was no longer considered a character encoding because different compressors might yield different outputs for the same text. However, in 2004 this decision was reverted and now SCSU is considered a compressing character encoding scheme, as opposed to a simple or compound character encoding scheme. Roman Czyborra (of GNU Unifont) wrote a decompressor. The IBM contributed decompressor is found in International Components for Unicode, along with a compressor written in Java. Simpler reference codecs are available as attachments to TR6. Symbian OS, an operating system for mobile phones and other mobile devices, uses SCSU to serialize strings. SQL Server 2008 R2 uses SCSU to compress Unicode values (there meaning from strings in UCS 2 encoding) stored in nchar(n) and nvarchar(n) columns, achieving space savings between 15% and 50% (while UTF 8 only has this 50% reduction for ASCII subset of Unicode), depending on the language of the data.
Жоспар
Келесі бөлімдер қысылған SCSU ағынының құрылысын қысқаша сипаттайды. Толық сипаттама (декомпрессор сипаттамасына сәйкес) UTS #6 құжатында келтірілген.
The following sections briefly describe the anatomy of a compressed SCSU stream. For a full description (matching that of a decompressor), see the UTS #6 document.
Кодтау режімдері
SCSU бір байттық режимде басталады, ол қысылған терезе кодтамасын қолданады. UTF 16BE "Unicode" режиміне және сол режимнен бір байттық режимге ауысу үшін командалар бар.
SCSU starts in the single byte mode, which uses the compressed Window encoding. There exist commands to switch to a UTF 16BE "Unicode" mode, and to switch to the single byte mode from that mode.
Терезенің кодталуы
SCSU өзегі 0x80 0xff байттарының мағыналары анықталған терезелерде жатыр. Жасырап жазулар мен тыныш белгілер үшін сегіз статикалық терезе, ал көбірек таңбаларды пайдаланатын жазулар үшін 6 динамикалық терезе (сонымен қатар "жартылай Юникод блогы" терезелері және қосымша жазықтықтарға арналған жеке терезелер) бар. Жасырап жазулардың екеуі де – қарапайым да, динамикалық та – арнайы командалық таңбалармен таңдалады. Ағымдағы блокқа сыймайтын жеке таңбалар үшін, дәйектеме таңбаларын пайдалануға арналған командалық таңбалар қарастырылған.
The core of SCSU lies in the windows for which the meanings of bytes 0x80 0xff are defined. There are eight static windows for simpler scripts and punctuation, and 6 types of dynamic windows (plus "half Unicode block" windows and custom Windows for the supplementary planes) for scripts making use of more characters. Both simple and dynamic windows are selected by special command characters. For individual characters that do not fit into the current block, command characters for quoting are provided.
Жалпы мақсаттағы жай мәтінді қысылу жүйелерімен салыстыру
UTF-16 немесе UTF-8 мәтіні, Unicode-қа дейінгі кодтамалардағы өзіне теңдес мәтінге қарағанда көбірек орын алатындықтан, бұл мәселені азайту үшін SCSU сияқты сығыстыруды қолдануға болады. Бірақ, жалпы мақсаттағы сығыстырғыштармен салыстырғанда, SCSU-ды пайдалану міндетті түрде артықшылық бермейді. Бұл, WHATWG HTML стандарттарына да қатысты, себебі HTML ASCII-ге үйлесімді емес кодтамалармен ескере отырып жасалмаған. Бұрын браузерлердің мұндай кодтамаларды нашар өңдеуі салдарынан сайттар арасындағы скрипттерге қатысты осалдықтар анықталған.
Because UTF 16 or UTF 8 text might occupy more space than its equivalent in pre Unicode encodings did, one might want to use compression such as SCSU to mitigate this problem. In comparison with general purpose compressors, it is not necessarily advantageous to use SCSU. and WHATWG HTML standards because HTML wasn't designed with non ASCII compatible encodings in mind. In the past, cross site scripting vulnerabilities due to browsers' poor handling of such encodings have been demonstrated.