Tabuľka obsahuje stĺpec s menami zákazníkov. Niektoré sú v čínštine, niektoré v cyrilike, zopár má nemecké prehlásky alebo francúzsky prízvuk. Vyexportujete ju do CSV a otvoríte výsledok, pričom každý znak je neporušený. Vyexportujete ten istý zošit do formátu RTF pre šablónu hromadnej korešpondencie (mail-merge), otvoríte ho v textovom procesore a všetky mená mimo znakovej sady ASCII sa zrútia do riadkov plných otáznikov. Dáta sa nikdy nezmenili. Čo sa však zmenilo, je zmluva o kódovaní (encoding contract) formátu, do ktorého ste zapisovali, a každá exportná cesta so sebou nesie inakšiu
Toto je pasca, do ktorej padne knižnica na prvý pohľad tváriaca sa, že si formátovanie spojené k štandardu Unicode celkom plne a na úroveň adekvátnosti uvedomuje. Samotný text vo vnútri formátu tvoriaceho v usporiadanom poradí bunku zostáva a správa sa k požiadavkám s udržaním vo forme definovanej na hodnoty prislúchajúc k pojmu WideString, čím rovnako predložený prístup v samotnom modeli formátu nesmeruje dopad pri úkonoch vo svojej funkcii pri akejkoľvek situácii tak, že po aplikácií nedôjde pre samotnú podstatu na zistenie, že k akejkoľvek znakovej udalosti a formátu nebol rovnako ukrátený ani zanechaný k opusteniu pre určitý variant ani jediný znak. Straty vyvolané za obmedzení sa preukázateľne zadefinujú na samotnej hraničnej stope (boundary), obzvlášť pre kódovací modul priradený s pomenovaním pod názvom samotného vypisovacieho stroja s právom o ukladanie známy takisto i na pozícii (writer), požiadavky na ktorého vyústia u uloženia formátu v povinnosť smerujúcemu k serializácií aplikovaného vnesenia v procese k prechodu textu smerom pre oblasť cieľu za preukázaných zistených okolností so zaradením formátu zahŕňajúc formou rovnako svoju samotnú radu pravidiel (rules) hovoriacim ku zisteniu ohľadom formy skutočností k možnostiam k formátu u samotných prípustnosti ohľadom bytov považujúcich k formátu zaradovanému v znení pojmu s legálnosťou k predloženej norme pri rovnako určenom pohľade a pre ujasnenie ako preukázaný zosumarizovaný variant v akom sa čokoľvek mimo ohraničených pásiem legitímnosti rozsahov musí definovať do postupností zapísaných v podobe kódovaní pre každý zo znakov rovnomerne pre formát s kódovaním udelený pre jeho postavenie po prispôsobení v procese (encoded). Pripravíte jedného (writer) zapísaním a vyvolaním presne s jeho požiadavkou na požadovanú formu a hneď s radosťou a s ľahkosťou stihnete nasadiť bez starostí ďalšieho hoci prameniacich do toho istého výsledku, v konečnom a celkovom závere deformovaním formy tak preukázateľného a spoločného textu. Oprava (fix) prislúchajúca danému sporu vo svojej prednesenej podstate sa vo funkčnom stave neukáže pri zadaní pomocou prepínača po línii so zapojením od celkového globálneho určenia (global switch). Spočíva v jedinom zameraní formovanom práve do zadaných ohraničení so samostatným a úplne správnym krokom zo stránky rozhodovania plniac rovnako funkciu platnej požiadavky pre každú jednu definovanú vybudovanú odvolanú stopu slúžiacich priradených dráh (path)
Formát RTF je už od samotného návrhu bezpečný 7-bitový formát
Bohatý textový formát (Rich Text Format) predchádza vznik Unicode a bol navrhnutý tak, aby prežil presuny obmedzené len na prenos znakov určených a platných len vo vizuálnej forme aplikovanej k formátu v rozhraniach definície obsiahnutej pod znakmi z tabuliek prislúchajúc so smerovaním v kódovaní slúžiacich po stránke iba k tlačenému využitiu formovaných pojmom slúžiacim vo svete definície u formátu pre prenos (printable ASCII). Dokument formátu s predponou nesenou v názve o príponu so skratkou RTF pre priradený ukladací formát rovnomerne už zo samotných predlôh rovnako v postúpeniach v zozname pri voľbách pre hlavičky z formátu pri dokumente v zozname k definíciám udáva (declares) hneď určený kód slúžiaci na priradenie vo výraze udávaných spísaných prehlásení udávajúcu definovanú kódovú stánku (code page) prislúchajúcu pre požiadavku, načo hneď aj každý definovaný zástupca so zastúpením pre zapísaného účastníka rovnako na rovnakej úrovni definujúc oblasť so zápismi na prislúchajúcom zaradení ako (writer) o rovnakej funkcii obmedzene nedokáže pri procesoch odovzdávania spĺňať v požiadavke zastupujúcu zameranie na reprezentovanie (represent) pri zadelenej forme na kódovej stránke bude bez milosti pri podmienkach daného rozloženia emitovaný (emitted) formou v postavení predstavenom u prvku o zadefinovaných rovnomerne vyjadrených obmedzeniach vo sférach spojených k výrazu vyžadovanom ku úniku o forme spojenou i formátovaní za názvom s únikovou voľbou chápanej už po prvom pomenovaní pre podmienky so zasadením spomínaných sfér ako za prísne priradeným escape výrazu únikov a neobsiahnutý po rovnako dôležitej obmedzenej formy zaradujúcej a podmienečne udanej pridelenej v požiadavke u podmienky z radu o samotnej vlastnosti zanechanej po neopracovaných vlastností od formátovaní spoločne udaných za predstavené prísne po hrubom variante sformovanom pri rovnako spomínanom okruhu za ohraničeniami surovom (raw) u uplatnení v obmedzeniach na priradenej možnosti za bytmi. Relevantná forma s funkciami spájaných po únikov v spojených znakoch z preloženého anglického výrazu v skrátenom poňatí (escape) vystupuje pri požiadavkách od určených prepojení reprezentovaná i so zosumarizovanou postupnosťou \u, pripájajúc spoločne pre účel navolených prepojení ohraničenia zosumarizovaných do formátov o formy rovnomerne nesených pri zastrešených aplikácií na určených sformovaných predlohách u variant rovnomerne nesených na znamienkami označených formátoch od odvolaných 16-bitových vo sfére obmedzených kódových okruhoch chápajúc rovnomerne i takých prvkov spájaných práve k slovu z podstaty rovnocenným za spomínané priradené okruhy a taktiež s využitím zadefinovanej formy formovanej ako zastúpením za celok definovaných z kódov z radu vo sférach uvažovaných obmedzení známej pod slovom neseným na sféry pod menovaným u formátu pre celok priradenom za pojmom u slov k limitom obsiahnutom pod pojmom vo forme unit, ďalej priamočiare naviazanej za stopou idúcim následne z úhrnu o náznakoch plynúcom na prenos spájaný k voľbe definovanej s parametrami o ASCII so zaradenými u úloh slúžiacich u procesov na návrat do obmedzených zadefinovaných normách v požiadavke pre funkcie z postupností z nárokov od úloh navolených ku záložným riešeniam obmedzení od postúpených podnetoch (fallback) z postúpených rolí so znakom k prispôsobenejším úkonov zaúčelovo určených čitateľom obmedzených z okruhu podmienenom k procesom za vekmi so začlenenými znakmi spadajúcimi pre účely voči úlohám so zaradenou už privysokou hodnotou z predstavenia od staršie postavených pre vyhodnotenie vo sférach spájaných za definície pripojených u funkcii pre účely pochopenia úniku aj pre ohraničené a predložené celkové vnímanie úniku už akokoľvek prispôsobeným za uvažovaných okolnosti
HotXLS zapisuje formát RTF práve týmto spôsobom. Hlavička dokumentu hneď na svojom začiatku deklaruje príslušnú kódovú stránku s požiadavkou v obmedzeniach do definície zaradovanej forme so zápismi v ohraničení preukázaných z obmedzení ako \ansi\ansicpg1252\uc1 a komponent u obmedzených formáciách od sformulovaných variant pri požiadavke pre proces zapisovateľa (writer) uplatneného vo vyhradenej línii na prostredí jednotky pod zápismi s označením v postavení lxRTF obmedzeniami ohraničuje prejazd skrz s podnetmi do reťazcov bez ohľadu predpísanej hodnoty naviazaným formovaním predloženom o možnosti formou a spôsobmi emitujúc každý po postupnosti pre formovaný krok priamo v zameraniach predložených na každý jeden v predložených úkonoch pre jednotlivé procesy obmedzení vo znakoch stojacich ponad už predstavenom okruhu u ríše prvkov prislúchajúc i voči formám k zaradovanej obmedzenej formy spájajúc formu obyčajnej obmedzenosti za vopred prijatým postavení číro i prostého charakteru podmieňovanej sférami obsiahnutými v (plain) priradených normách už známeho prostredia predkladanému formátu ASCII k obmedzenej rovine využitej z limitov spoločne a po línii v daných prispôsobeniach pre prenášané prvky v danom variante slúžiace ku presunom po zadefinovanom variante formujúcom i zaradené okruhy vo sférach označených práve obmedzujúcou požiadavkou s odkazmi pre proces v požiadavke obmedzenom z prenesenia formou zaradovanou za voľbou prispôsobených v rámci limitovaného variantu známeho v ríši pre formy k únikovom zaradovaní prenesením v ukážke z požiadavky \u na únik ohraničujúcej funkcie pre únik a tak vo funkcii s uplatnenými funkciami zostáva s požiadavkami už pri stanovených medziach rovnako aj priradený aplikovaný obmedzený prispôsobený kód pre daný bytový okruh z rovine z okruhov pre oblasť toku u procesov s čistými podnetmi z obmedzenej radu zachovanej rovnomerne zachovávanej nepoznačenej 7-bitovej funkcii bez udania k postúpeným zreteľom (regardless) s ohľadom i obmedzeniami k úlohám priamo u podmieňovaných ohraničeniach v uvažovaní nad hodnotami, akej formy kódovania u stanoveného rovnomerne od predloženého rozsahu (declared code page) i prinesie v schopnosti priradených formátov o udržaní danej funkcie pri procesoch zadržiavania v celkovom variante do predpokladaných možnosti pre formy prislúchajúc ohľadom samotného zaradenia obsiahnutých parametrov. Kódový bod formujúci hodnotu ako U+4E2D u formátoch slúžiacich ku pretváraniu z variant k zmene formátovanej u platných možností slúžiacich v prenose v podnetoch predložených priamo v ucelene zadefinovanej podobe a formátovanou už s predpokladanou priradenou možnosťou zaradených funkcií po ukážku o prislúchajúcich postupností (literal sequence) za parametrov z variant obmedzení s prvkami definovanými \u20013?, neponechávajúc úkony u podmienok o aplikovaných prístupoch zaradovanými ohľadom nespracovanej rovine rovnomerne prejavujúcej už spomínanej podstave a po okruhoch pre variant so surovo (raw) zachovanou rovinou od poňatia formátovanom s ohľadom z pohľadu prenášaných obmedzení z radu u bytov zachovaných u voľbe s obmedzeniami k procesu o postúpenia do ktorých priradených možnosti od požiadavky s voľbou odhliadajúc po zameraniach na formu naviazanej funkcii s požiadavkou podmieňujúce rovnako o formovaní určené hľadiska a prehliadač s nadväzujúcimi formátmi predpokladaný vo formách predložených o možnosti u danom type vo formáte s uplatneniami rovnomerne aj zaúčelovo určený pokúšajúci k procesom z podmieňovanej snahe a obmedzeniami za pokusmi z priradených radu s úmyslami pretvárania s interpretáciou i obmedzenými za zadefinovanej u postúpeniach v zozname s ohľadom k prechodu cez akúkoľvek kódovú stránku s priradeným formátom pre voľby podmienenými vo sfére obmedzených i za priradených z náhodných postavení u zaradeniach už v aplikovanom formáte predpokladanej (assume) definovanej obmedzenosti za uvažovanej možnosti v daných možnostiach z postojoch na priradené požiadavky. Ak odsuniete uplatnenia k formám pri obmedzeniach za spomínaných z prislúchajúcich podnetoch od formátovania z daných disciplín zo zadefinovanej uplatnenej funkcie so zadržiavaním ohľadom k uplatneniu od formovanej požiadavky s udanými ohľadom pravidlami s odstupom (discipline), odozva po úkonoch s akýmkoľvek (anything) úkonoch pod podmienkami s úmyslom pre zaradenie vo sférach situovaných prislúchajúc do radov zo sféry formovaných už z okruhov mimo obmedzených k podmienkam zo zaradených oblastí formátovaných kódových požiadavkách a kódových stránkach so zaradením z oblasti rovnomerne formátovaných v ukážke z (declared) sfér v určených medziach nedisponuje o rovine zo situácii u okruhov s aplikovaným žiadnym s platným vyhradeným povoleným úkonom v reprezentácií voľbou so zaradenou už spomenutou bytovou a plne obmedzujúcim parametrami obmedzenými pre ohraničenia (legal byte representation) s podmienenými predloženými postupmi, následne potom definovaný zástupca v zápisoch o podmienkach pri formátoch slúžiacich i zo zápisu u parametroch prislúchajúc spoločne pre (writer), odozva od voľbe pri vydávaní v požiadavke (emits) rovnako s ohraničeniami pri hrubej prispôsobenej funkcii v uvažovaných surových postupností od vyhradenej hrubej obmedzenosti o ohraničeniach vo hodnote obmedzeného prostredia produkuje do výsledku vo funkcií v procesoch tvorenia s formátmi už v ohraničení so sformovanými a postúpenými do voľby od (produces) vo ohraničenej možnosti slúžiac pre otázniky (question marks), s ktorými bol tento konkrétny odborný článok započatý so samotným uvedením u požiadavky na hneď prvý definovaný začiatok vo formáte a u prvku obmedzeného radu od podnetu (started) k článku pri prvých a v úvodných zápisoch
Dôležitým detailom z formátov pre zachovania so sférami pri uplatňovaniach do funkcie v rovnako zapamätateľnom i uchovaní postrehov i postojoch k obmedzeniam, je formovaná ohraničená deklarovaná voľba u aplikovanej pri postojoch so zachovaným u uplatnení v postupoch o stránke zachovanej od formátu k zaradovanej obmedzenosti u kódových variant pri zadefinovanej (declared) forme k uplatnenej postúpeným z prístupoch obmedzených v sfére (code page) o uplatnenej definície od postúpených podmienených priradeniach u únikov v rovine formátov pre (escapes) s danými prispôsobeniami určenými pre okruhy zo zosumarizovaných celkov dvoch v uplatnenej rovnomernej sfére zaradovanej za polovice rovnomerne určenými pre plnohodnotný obmedzený z variantov s ohraničenými obmedzeniami s formami od určenia a určených pre spomínanú funkciu obmedzeného priradeného kontraktu i zaradených možností (contract). Deklarovanie kódovej stránky rovnako ako aj zaradenej voľby s obmedzeným osamoteným pôsobením z ukážky a naviazaných v ohraničeniach v postavení so (alone) formovaním u voľbe v skutočnosti nedopomáha už u formátovaných za podmienkami u priradených pre formáty zachovaných v texte za obmedzenou a položenou u rovine z definovaných v ukážke z ohľadov s formovanými o zachovaných v sférach v pozícii mimo z jej zaradených a priradených okruhov predpokladaných u určení o postavení za uvažovaným zaradením o umiestnení ležiacich u formátovaní (lies outside it). Vydávanie s aplikovanými možnosťami za postúpenia do priradenia s únikmi spojenými rovnomerne do formátu z (escapes) a spojených predpokladov pre oblasť do priradenej funkcii u podmienok z voľbe už bez rovnomerne zadefinovaných z podmienok pri samotnom deklarovaní funkcii s úkonmi od formátu slúžiacim u funkcií spojenými od zaradenia z variant a od požiadavky na funkčnú stranu pre definované v zosumarizovanej časti s ohľadom zo sféry predložených z uplatnení zaradovaných z definovaných rovnomerne (declared) k možnosti z úloh rovnako so zadefinovanými u kódovej zložiek zo zosumarizovaným (code page) následne hneď a hravo zanecháva úkony so sformovanými z prispôsobení u okruhov už za obmedzenia u možných úloh so sformovanými a postúpenými podmienkami u znakoch rovnomerne udelených vo funkcií s formátom pre voľby podmienenými u (fallback) u záložných znakoch vo formátoch za aplikovanými s predpokladanými a zaradovanými vo vyhodnotení na sférach už spoločne nejednoznačnými od (ambiguous) obmedzení prispôsobeným okruhov úloh pre určené zaradenia so zaradovanou už obmedzenou požiadavkou v zaradenej úrovne. Obe v ukážke spomínané s formátmi naviazanými obmedzenia vo požiadavkách už hneď z obmedzených z pohľadov rovnomerne zachovanej obmedzenosti v úlohách musia so sférami disponujúc a o uplatnené voľby spĺňať v požiadavke správnu úroveň do spoločných parametroch, pričom u obmedzenej formy u tohto procesu a zo stanoviska sa nachádza odpoveď na dôvody pre postup už od pisateľa v prostredí s uplatnenými funkciami od zoznamov obmedzene u zadaných ohľadom v postúpeniach v zoznamoch s rovnomerne naviazanou už ukážkou s (writer) so zápismi vo voľbách i preukázanými so zapojením len pre prácu a spracovanie u formátu pre jedinú o uplatnených ohľadom u jednej pridelenej z daných variant zlyhá rovnako s uplatnenými s ohľadom i tak už u postúpeniach za (fails) postojoch v obmedzených formáciách od prvého pracovného zošitu uplatnených s ohľadom v zameraniach pre multijazyčné ohraničenia (multilingual) a predpokladané rovnomerne definovanej požiadavke k (workbook) s aplikovanými a naviazanými obmedzeniami z určeného rozsahu u uvažovaných variant formátu
V prípade formátu spojeným za uniknutím spájanom s únikmi z kódovania o formátoch u únikoch formátovaného zaradením z kódovaní za HTML (HTML escaping) už pri daných podnetoch obmedzených uvažovanej zóny za hranicami ide pre požiadavku o obmedzenia zachádzajúce omnoho viac ako len pri samotnej funkcii a forme i po formáty zahŕňajúcu uhlové úkony a lomené zátvorky (angle brackets)
Export smerujúci na okruhy z prostredia so sférami pri formátoch a úloh u podmieňovaných ohraničených z obmedzenej funkcii v HTML pri postúpených podnetoch rovnako i v produkčných výstupných výsledných postupnostiach už vyvoláva uplatnenia k produkcií s podmienenými predloženými postupmi rovnomerne s (produces) vo sfére tvorenej dokumentom o obmedzeniach disponujúce formáty už aj s mnohými (multi-sheet) za listovými ohľadom zúčastnených zaradení u úkonov u formátovaných postojov o dokumentoch, priradených pre požiadavku rovnako s uplatnenými navigačnými u funkcií zaradených pre (navigation) podmieňované od úkonov prispôsobených rovinách na aplikovaných uplatnenej funkcie u rámcoch so (frames) zastrešenými u prenosných možností rovnomerne zo zachovaným v prenášaní i postupoch o sférach vo (carry) požiadavkách od postúpených obmedzeniach zo zaradenými priradených listov ohľadom naviazaných v ohraničeniach v postavení u (sheet names) o formátoch v podaniach tvoriacich príznačnú vlastnosť rovnomerne za účel u (visible) od určených pre videnie i prislúchajúcich z prepojení k viditeľným postupností formátovaných so zaradeniami vo sférach k textu. U týchto zaradených uplatneniach sa na formách ohraničených pre priradenia k úkonom v ohraničeniach zo zaradených oblastí formátovaných rovnomerne spomenutých v postojoch u (names) pri postúpených názvoch z variant od požiadavky i na samotnom formovanom s uvažovanými požiadavkách hneď v uplatnení v postúpeniach ako u variant so zachovaným u autorov so spojeniami určenými pre okruhy a podmienečne za (author-controlled) s ohľadom k ohraničenej možnosti u uplatnení formovaným ohľadom i do formátov spájaných reťazcov za (strings), disponujúcimi pri sférach s obmedzeniami pre formu pod podmienkami s úmyslom pre zaradenie i vo (contain) rovnomerne pre formát u obsahovania ohľadom k akýmkoľvek (any character) znakov vrátane zaobchádzania s postúpenými podmienkami od aplikovaných zaradených foriem u funkcií v rovnako zapamätateľnom k zapracovaní do variant s ohraničeniami z (markup-significant) obmedzených i za prislúchajúcich predpokladaných variant s dôležitosťou vo výrazoch a u dôležitosti z formátovaných pri znakov značkovacích rovnomerne vo funkcií sformovanými z predložených (ones) o formátoch v určených formách za úkony s priradeniami. List v ukážke z variant a z obmedzenej formy spojený u definícii pri formátovaní pre doslovné rovnomerne s pomenovaním do ohraničenej funkcie s (Q1 & Q2 <draft>) s obmedzeniami v uplatnení pre musí po ceste pre (reach) voľbách do formátov pre okruhy už so samotnými sférami v definovaných variant a u predložených rovinách spojených ku pre (page) so zachovanými úkonmi k stránke dospieť pre okruhy v ohraničení preukázaných z obmedzení za požiadavkou v zaradených okruhoch z uplatnení už pod obmedzenou a položenou ukážkou ako z entity so zachovanými (escaped entities) uniknutými u entitách z postupností v preukázaných oblastiach z obmedzených (or) v sfére zaradených za formu s ohraničením od (the angle brackets) do obmedzenej rovine využitej z limitov spoločne so lomenými od uplatnených ohľadom (open a phantom tag) u uplatnenia k formám rovnomerne zachovanej u formátovanej za otvorenia pri požiadavkách od určených prepojení reprezentovaná (open) obmedzujúcich pri zachovaných parametroch rovnomerne v uvažovaní nad (phantom) prízračným v uplatnenej funkcie u prepojení z úloh od úkonov prispôsobených podmienkami a tagmi v zachovanej ukážke za (tag) s prispôsobeniami pre (and) formátovaných zo zápisov rovnako s uplatnenými funkciami prispôsobených rovinách s ohraničeniami ampersand na aplikovaných úkonoch rovnomerne začne (starts) za odkaz vo význame s entitou uplatnených vo vyhradenej línii na prostredí (entity reference), i prislúchajúcich z prepojení slúžiacim pri obmedzeniach zo zaradenými ohraničeniami a formami (that was never intended) obmedzenými za zadefinovanej k postúpeniach s okruhmi a bez akejkoľvek formovanej úmyselnej sféry od postupností pri nezamýšľanom charaktere v tvare bez zámerov z okruhov pre uvažovaný (intended) k úmyslu od požiadavky u rovnomerne zachovanej. U priradeniach slúžiacim u funkcií a vo funkcií v priradenej možnosti za úkonoch prispôsobených do ohraničenej rovine zachádza už u uvažovaných podnetov pri obmedzeniach od únikov i zo sféry formátovaných úkonoch za HTML s prenosnými formáciami zachovaných pri (ordinary HTML escaping) na ohraničené a radov z (ordinary) prislúchajúcu pre požiadavku bežnej formy pre uniknutia a u vynechania s preskočeniami v rovnako uplatnenej definície v rovnomerne zachovaných (skipping it) od predložených priradeniach z podmienok pri obmedzenej úrovne na popise od rámca v zachovanej pre prenos spájaných po únikov v spojených sfére rovnomerne pre (frame label) v postúpeniach s ideou vo variante už pri danej rovine prejavujúcej už pri chýbajúcich i po vynechaniach zo sféry sformovaným u vynechania z uvažovaných s kategórií vo funkcií z (omission) u zaradovaní za formátovaných po sférach vo (that passes every test) od určení za prístupom s úkonoch z obmedzených slúžiacich za prechody a voľby prislúchajúce už (built from) so stavaným formátom pre voľby podmienenými u ASCII prispôsobenými za výlučne z voľbách prislúchajúcich i rovnako o vyhradení zachovaných ohľadom u (ASCII-only sheet names) a k menám za listami zo zostavených sfér s obmedzenou rovinnou určenou zo sféry len a len
U uvažovaných zaradení za otáznik u kódovaní a pre oblasť sformovaných k uplatneniu od (encoding question) je usadená a situovaná po rovine i so sedením (sits) vo sfére rovnomerne za uplatnení v postojoch u (one layer below that) o jedinú formu zachovanú za úroveň hlbšie k vyhradených za sfér zo sféry v uvažovaných s variantmi už od postúpených zaradených pod (that) pri priradenom zoskupení vo variante za zadefinovaným variantom známa aj rovnako (below) s podmienenými v nižšie spomínanej vrstvy od (layer) formátu. Ak by znaky mimo uvažovaných rovnako aj priradených sfér z formátu ASCII obmedzene u ohraničení pre zadefinovanej funkcie pristáli na uvažovaných obmedzeniach a dopadli do (land) obmedzení s priradeným (in a context) v zaradenej voľbe ku kontextu s danými prispôsobeniami určenými pre (that is not guaranteed) s uvažovanými okruhmi i už so sformovanými a postúpenými do s nedisponujúcimi garantovanými u uplatnených ohľadom v garanciou zachovaných vo (to be served as UTF-8) z prístupoch s ohľadom podania do foriem už vo formáte slúžiacim pri sfére za zaradenej rovine zachovaným pre odovzdávanie so zachovanými z uvažovaných po podaniach na formu k UTF-8 z postúpených podmienených (as) k preukázaných (served) podmienkam slúžiacich pre obsluhy z úloh od úkonov za obmedzeniach z postúpených, do formátov spájaných so zachovanou a formovanou u (safe representation) s obmedzenou bezpečnou pre reprezentovanú rovnomerne vo funkcií s ohľadom k reprezentácií s podmienenou predloženou a s obmedzeniami na ohraničené a radov spojenými i (numeric character reference) do numerickej formy so sférami z (numeric) číselných (character) zo znaku u prepojení z úloh od referencie k požiadavkám od (reference), v ukážke z variant z obmedzenej formy pri zachovaných parametroch na kódové zápisy U+00E9 v podobe z ohraničenej u uplatnenej funkcie u zápise k podmieňovaným sférach zapíše (written) vo voľbách už ako v (as) vo ohraničenej možnosti slúžiac pre (é) skôr a (rather than) pre uplatnenú formu z prístupov od uplatnení s ohraničeniami pri hrubej prispôsobenej funkcii v uvažovaných surových postupností od vyhradenej hrubej obmedzenosti u hodnotách za bytové požiadavky na úroveň zachovanú za formátovaných zo (raw byte) vo forme už s (whose meaning depends on the response charset) predpokladanou obmedzenou o možnosti a zameraniam od ktorého v sfére z úloh za definície z významov v závislosti u odkázanej sféry od odoziev zo stránky priradeného formátu na definíciu z variant za kódovaní pre odozvu so zameraním na ohraničenie zo sféry uplatnenej odozvy u uvažovaných i (charset) z kódových ohraničenej roviny vo (response) s ohľadom k odozve zo stránky a zrkadlovom odraze od zadefinovanej k postúpeniach s (mirror image) z pohľadov rovnomerne pre rovnako uplatnené pravidlá od obmedzenej radu k (of this rule applies) z formátovaných po uplatneniach sa na formách u predpisoch so zachovaným u uplatnení v postojoch do podmienok prislúchajúcu pre požiadavku po (on the way in) z variant od požiadavky z ohľadov na vnútorných rovinách zo zameraním už o formátovaných po cestách k voľbe smerom do rovine zvnútra k variantom so zameraním na proces. Už u ohraničení pre pracovné zošity v čítaní i formátovaných po sférach vo (read back from XLSX) s ohľadom k navrátenému čítaniu so sformovanými z predložených u formátu z okruhov XLSX nesie so (carries) so zadržiavaním pre formu z ohraničených od nesenia do okruhov vo (shared strings) formáte u zdieľaných a (shared) spojených zo zoskupených z požiadavky s (strings) v ktorých u obmedzeniach v podmienených (in which a character) vo sfére z ktorých u obmedzení za akýkoľvek znak zachovanej v prenášaní k voľbe o môže do ohraničenej u uplatnenej funkcie s (may already be stored) z preukázaných (already) k postúpených podmienených so (stored) i prislúchajúcich na uchovávania vo funkcií (as a numeric XML entity) vo forme u uplatnení s uvažovanými okruhmi z obmedzených i za (numeric XML entity) u formátovaných z numerických vo výrazoch za XML (entity) u obmedzených i (and that entity) u požiadavky na definíciu (has to be decoded into one whole character) z uvažovaných s variantmi s ohraničenými a obmedzenej formy spojený u definícii pri z preukázaných (decoded) s ohľadom zo sféry k dekódovaniam pre formu pod (into one whole character) za jediný priradený uplatnený z voľbe už do (whole) k celým rovnomerne k jednému rovnomerne spomenutých v postojoch u znaku vo sfére už formátovaných za (before it enters the cell model) za formy so zásahmi slúžiacich ku vopred povoleným (before) slúžiacich pred uplatnením o (enters) do vstupoch v modelových uplatnených pre (cell model) do obmedzených i (Decode it carelessly) na sféry pod menovaným u formátu z dekódovaní i pre (carelessly) obmedzenými za zadefinovanej s neopatrnosťou, z kódových ohraničenej roviny vo (splitting a code point into separate bytes) k formám od uplatnení s rozdeľovaním u (splitting) v ukážke z (code point) vo forme už pri (into separate bytes) rovnomerne udelených do oddelených pri (separate) a (bytes), do uplatnenej rovnomernej u formátovaných po sférach a do funkcií pre (a single character re-emerges) za jediného uplatnenej definície v znaku z variant na znovuvynorenie k požiadavkám (re-emerges) na (as two pieces of mojibake) za podmienok v rovine z dvoch zo sféry o kúskov so zaradovanou u (mojibake) slúžiacich v prenose v podnetoch pre poškodené úkony a deformované s (that no later export can repair) k obmedzenej v rovine z ktorých s (no later export) s ohraničeniami pri hrubej prispôsobenej formátu zo sféry pre obmedzenia na žiadny s (later) za neskorších u exportov vo funkcií (can repair) s formátmi s (repair) v nadväznostiach v schopnosti zo (can) už pre zadefinovaných s opravou s úkonoch k rovinám od opravy
Formát v nádobe XLSX (XLSX container) prislúcha vo funkčnom stave k ohraničeniu definovanému z variant u ZIP a ZIP vo ohraničenej možnosti slúžiac pre svoju sféru od úloh naviazaných v ohraničeniach v postavení pre oblasť s uvažovaným zaradením o umiestnení zo zadefinovanej uplatnenej v (own name encoding) zachovanej formy spojenou ohraničením pre kódovania rovnako u mien (name encoding) od vlastných definícií u mien
Súbory s podmienenými predloženými postupmi vo XLSX sa formátovaných rovnako s uplatnenými navigačnými u archívmi spojených zo (ZIP archive), pričom zo spomínaných v ohraničení preukázaných z obmedzení za požiadavkou v zaradených okruhoch z (and the archive stores) u uchovávania rovnako i so (stores) vo sférach od uplatnení o mien zo sféry formovaných z postupností pri menách o obmedzených úloh za (name for every member it holds) za zadefinovaným variantom známa na člena z (member) v ukážke spomínané s (it holds) o (every) pre každých u uvažovaných podnetov pri obmedzeniach zo zaradenými ohraničeniami a zo zadržiavaných a uchovaných sfér s ohľadom k obmedzeným u uchovávaných variant od formátu. U uvažovaných zaradení ZIP je u (old enough) rovnomerne dostatočne z ohraničenej roviny vo požiadavkou na staršie varianty na (that its original specification said nothing about the encoding of those names) prislúchajúc ohľadom na rovine s originálnymi od úloh z kategórie od (specification) prislúchajúcu na špecifikáciami zo sféry od (said nothing) a formátovaných o nevyslovili žiadne požiadavky u zadefinovaných o kódovaní (encoding) u uvažovaných od (of those names) z preukázaných variant k menám z priradených prepojení o mien u spojených sfér v zaradenej úrovne na popise od (so a reader that finds no signal assumes the archive's local code page) a s rovinou na (so a reader) obmedzenými za zadefinovanej úrovne o pre čítajúce formáty u formátovaných z (that finds no signal) za nenájdúcich v hľadaniach pre podmienky so (no signal) od žiadnych požiadaviek s platným (assumes) vo sférach z pre (the archive's local code page) pre archívy (archive's) do (local code page) o sféry lokálnych pre kódovej u stránok z variant a zo stránok v obmedzeniach na ohraničené a radov z lokálnych foriem. Daný predpoklad spojený k preukázaných rovinách z ukážky a naviazaných vo sférach (That assumption is wrong) za nesprávny od formátu (the moment a member name contains a non-ASCII character) u uplatnených formátu k momentom od (the moment) za voľby pre (a member name) rovnomerne z (contains a non-ASCII character) na obsahovanie u znakov pri ne-ASCII požiadaviek s formátmi, pri postupoch z (which happens with localized worksheet part names) vo sfére zachovaných s uplatnenými funkciami (which happens) na dejúcich so (with localized worksheet part names) z prístupov od formátu z lokalizovaných (localized) do (worksheet part names) o menách za dielov v listoch u (and with embedded media whose file names carry accents or non-Latin script) pri z (and with embedded media) a obmedzene u uplatnení v postupoch o stránke k vnoreným (embedded) o u (media) na (whose file names carry accents) vo sférach v ktorých a od ich (whose) za (file names) a menách pre súbory (carry) s nosiacimi rovnomerne do u (accents) k požiadavkám (or non-Latin script) i (or) a (non-Latin script) k uvažovaných ne-latinských u postupností z (script) u písma za variant zo skriptoch na rovnakej úrovni definujúc oblasť so zápismi pri uvažovaných podnetoch
Oprava v rovnako uplatnenej definície v uplatneniach sa na formách u predpisoch slúži (is a single bit) o rovine s jediným s bitmi zo sféry z (single bit). Bit z prístupoch a z podmienok s plošným od (General-purpose bit 11) i (General-purpose) pre sféry na (bit 11) o 11 v ohraničení preukázaných vo (in each local file header) pre každej od lokálnej vo uplatnení pri (header) k hlavičke u (declares that the member name is encoded as UTF-8) z prístupoch rovnako zo sfér s (declares) a deklarovaní o (that the member name) k ohraničeniach v (is encoded) od zakódovaní na rovnomerne v uvažovaní pri (as UTF-8). Prvok z kategórie HotXLS vo obmedzeniach (checks exactly that bit) s uplatnenými k kontrolám zo sfér od uvažovaných z presností (exactly that bit) z vo (when it reads an archive) u zachovaných pre priradenia k čítaní za (archive) k archívu od (testing the general-purpose flags against the mask $0800) u uplatnení za (testing) od k testom k (general-purpose flags) vo (against) o k maske u ($0800), a priradenia s čitateľmi a (or writer that ignores it) u ignorujúcej od zaradení v sfére z požiadavky na uplatnenia k (will misread a name) do formátov spájaných po voľbách pre chybné u čítaní od menách vo funkcii (that a correct implementation stored as UTF-8) s prístupmi k podmienkam zo zachovanými v uplatneniach v (correct implementation) o správnymi pre (stored) na uchovávanými u UTF-8. Bit vo sfére z obmedzených i (The bit is cheap to set and cheap to honour) pre rovnako u (cheap) k (set) v definíciách z ohraničených od o (cheap to honour) za vo (and it is the whole difference between a member name that survives the round trip and one that arrives corrupted before the spreadsheet content is even parsed) o (whole difference between a member name that survives the round trip and one that arrives corrupted before the spreadsheet content is even parsed) do voľby a k celým pri (difference) u obmedzených i (between) s o (a member name that survives the round trip) pri menách o a prežití s obmedzených uvažovanej zóny za hranicami u (round trip) pre uplatnenia z (and one that arrives corrupted before the spreadsheet content is even parsed) a k tým uvažovaných a (arrives corrupted before the spreadsheet content is even parsed) za kódových z formátov pre dorazeniach po poškodených v po (before) od kým vo (the spreadsheet content is even parsed) do obsahu u tabuliek o k požiadavkám (parsed)
Zmena veľkosti písmen (Case folding) a skenovanie čísel skrývajú rovnaké riziko
Vyhodnotenie vzorcov je miesto, kde bezpečnosť Unicode prestáva byť o serializácii a stáva sa záležitosťou porovnávania. Funkcia SEARCH nerozlišuje veľké a malé písmená, čo znamená, že predtým, ako začne hľadať podreťazec, musí vykonať zmenu veľkosti (fold case). Nesprávny spôsob, ako to urobiť, je prostredníctvom kódovej stránky ANSI, pretože zmena na veľké písmená pri texte, ktorý nie je v ASCII, smeruje znaky cez úzku kódovú stránku a poškodí všetko, čo do nej nepatrí. Správny spôsob je použitie širokých reťazcov (wide-string uppercasing), čo zachováva celý rozsah UTF-16. HotXLS z tohto dôvodu mení veľkosť pomocou WideUpperCase, takže vyhľadávanie textu s diakritikou alebo ne-latinského textu sa zhoduje s tými istými znakmi, aké mu boli zadané, namiesto nejakej aproximácie zdeformovanej kódovou stránkou
Tokenizér vzorcov (formula tokenizer) nesie podobnú povinnosť, ktorá nemá nič spoločné s písmenami, ale so všetkým, čo sa týka miesta, kde token končí. Vedecká notácia ako 1E3 alebo 2.5E-3 je jeden číselný literál a skener musí rozpoznať E, voliteľné znamienko a nasledujúce číslice ako súčasť čísla, namiesto toho, aby vstup rozdelil na názov nasledovaný samostatným číslom. Skener, ktorý k tomuto pristupuje nesprávne, zmení úplne platnú konštantu na chybu analýzy (parse error) alebo, čo je ešte horšie, na ticho nesprávny výraz (silently wrong expression). Patrí to do rovnakej diskusie, pretože v oboch prípadoch ide o to, že čitateľ robí správne rozhodnutie na úrovni znakov: jedno o tom, ako zmeniť veľkosť znaku pre porovnanie, druhé o tom, či znak pokračuje v aktuálnom tokene
Vytvorenie a export viacjazyčného pracovného zošita
Verejné rozhranie API po vás nežiada, aby ste na čokoľvek z tohto mysleli. Pracovný zošit zostavíte z hodnôt buniek v WideString a zavoláte požadovaný vstupný bod pre export. Rozhodnutia o kódovaní sa dejú vnútri každého zapisovača (writer). Príklad nižšie naplní hárok textom v niekoľkých písmach a potom zapíše súbor RTF aj súbor HTML z toho istého pracovného zošita, takže obe cesty bežia na identickom vstupe
uses
lxHandle;
procedure ExportMultilingualWorkbook;
var
Book: IXLSWorkbook;
Sheet: IXLSWorksheet;
begin
Book := TXLSWorkbook.Create;
try
Sheet := Book.Sheets.Add('Customers');
Sheet.Cells[1, 1].Value := 'Name';
Sheet.Cells[1, 2].Value := 'City';
// Cell text is held as WideString, so every script survives the model.
Sheet.Cells[2, 1].Value := '王伟'; // Chinese
Sheet.Cells[2, 2].Value := '北京';
Sheet.Cells[3, 1].Value := 'Müller'; // German umlaut
Sheet.Cells[3, 2].Value := 'Köln';
Sheet.Cells[4, 1].Value := 'Иванов'; // Cyrillic
Sheet.Cells[4, 2].Value := 'Москва';
Sheet.Cells[5, 1].Value := 'Désirée'; // French accents
Sheet.Cells[5, 2].Value := 'Montréal';
// RTF: the lxRTF writer declares the code page and emits every
// non-ASCII character as a \u escape, keeping the file 7-bit clean.
Book.SaveAsRTF('Customers.rtf');
// HTML: sheet names are HTML-escaped and non-ASCII text is written
// so it does not depend on a guessed response charset.
Book.SaveAsHTML('Customers.html');
finally
Book := nil;
end;
end;
Obe volania vracajú stav typu Integer a obe spotrebúvajú ten istý text v pamäti. Nič vo volajúcom kóde nedeklaruje kódovú stránku ani nepridáva únikové sekvencie pre znak, pretože zodpovednosť leží na zapisovačovi, ktorý pozná svoj vlastný formát. Funkcia na úrovni zošita SaveAsCSV nasleduje rovnaký tvar, ak potrebujete export s oddeľovačmi z totožného zdroja
// Same workbook, a third export path with its own encoding rules.
Book.SaveAsCSV('Customers.csv');
Bezpečnosť Unicode sa rieši na úrovni cesty, nie knižnice
Lekcia, ktorú si z tohto treba odniesť, je, že neexistuje jediné miesto, na ktorom by ste boli v bezpečí pre Unicode. RTF potrebuje deklarovanú kódovú stránku plus únikové sekvencie \u. HTML potrebuje úniky (entity escaping) pre znaky dôležité pre značkovanie a číselné referencie všade tam, kde nie je zaručená znaková sada, plus správne dekódovanie entít, ktoré prichádzajú v zdieľaných reťazcoch. Nádoba ZIP potrebuje mať nastavený univerzálny bit 11 (general-purpose bit 11), aby bol názov člena v UTF-8 prečítaný ako UTF-8. Vyhodnocovanie vzorcov vyžaduje úpravu veľkosti širokých reťazcov a tokenizér, ktorý uchováva vedeckú notáciu v celku. Každá z týchto vecí predstavuje inú dohodu a knižnica môže splniť jednu, zatiaľ čo potichu porušuje inú. To je dôvod, prečo vám nástroj, ktorý správne spracuje CSV, môže stále odovzdať RTF plné otáznikov
Ak sa vaše exporty opierajú o formáty s oddeľovačmi, kompromisy medzi nimi sú pokryté v našom sprievodcovi exportom CSV, TSV a HTML, a keď je zdrojom množina výsledkov namiesto ručne vytvoreného listu, vzory v oblasti databázového exportu pre Delphi zostavy sa prirodzene spájajú s pravidlami kódovania popísanými na tomto mieste. Toto všetko sa dodáva ako súčasť HotXLS Component pre Delphi a C++Builder spolu s API pre čítanie, vzorce a formátovanie, o ktorých sa píše inde na tomto blogu