Mi kódolás jobb, hogy nem egy oldalon
Számomra a válasz nyilvánvaló: annak szükségességét, hogy UTF-8.
Kezdetben programozók szerte a kódolt szöveget, nem gondolt arra, hogy vannak más nyelvek jelek a világban. Ha a digitális világban egyesült internet, meg kell jeleníteni a betűk és az oldalak úgy, hogy lehet olvasni vagy írni bármilyen számítógépen a világon. Így jelent meg a kódlapot vagy kódolást. Meta-adatok vannak rögzítve a szöveget, mondván, a böngésző vagy e-mail alkalmazás, hogyan kell dekódolni byte karakter. Nem meglepő, hogy gyakran elfelejtik, hogy a kódolást, vagy baj van vele. Programok kellett tanulnia azonosítani tudja automatikusan, ez nem mindig lehetséges. Vált világossá, hogy a világnak szüksége van egy digitális eszperantó. Ha a szerepe a hétköznapi nyelv eszperantó megragadta epikus meghibásodása, az információs technológia vált csodaszer. Csak hívd Unicode.
Legígéretesebb változata a Unicode UTF-8 lett. Ő obratnosovmestim Ascl kódolású. Nem törik, ha a karakterlánc talált hibás karakterhez, dinamikus karaktert kód mérete egy-hat bájt.
Van néhány dolog, hogy emlékezzen, amikor dolgozik Unicode. Mindig át kódolás a szerver a HTTP -zagolovkah és adja meg a meta tagek.
Ezen kívül htmlek, meg kell győződnie arról, hogy a fájlokat yavasksiptami és stílusok is helyes kódolást. Példa .htaccess fájl Apache:
Ha írsz a Ruby, ne felejtse el, hogy a fájl elején
A legnagyobb probléma a feldolgozása UTF-8 a PCP-t. Először. Meg kell használni mb-analógok a string függvények, mint például: mb_substr. helyett substr. Mert ez a modul mbstring kell betölteni futási PCP. Lehet akár csak beállítani, hogy működjön együtt a kívánt kódolás: Second. vannak problémák a nem latin karaktereket a reguláris kifejezések. Például akkor is, ha meghatározza a módosító u, magyar betűket nem szerepel a \ w. ezért egyértelműen fel kell tüntetni [A-Ha -yaOo] (g betűs kóddal nem megy mögött th a táblázatban, ezért külön adjuk hozzá).
Kód, a megállapítás minden szava egy sorban, és tedd a $ illeszkedik változó
Helyes kolleyshn lehetővé teszi számunkra, hogy fontolja meg a levél g. e, és a többiek, akik szeretik őket, ugyanazt a szimbólumot. Ez azt jelenti, hogy a teljes szöveg keresés ugyanazt az eredményt adja a lekérdezés „fa” és az „fa”.
Egyszer volt egy feladat átalakítani az összes tracklists album CDDB fájlt UTF-8. 99,9% -a fájlokat kódoló helyesen azonosította chardet.
I-hez neves tanácsadók megosztani más árnyalatok dolgozó UTF-8.
Ez volt a tanácsot a fejlesztési weboldalak. Szeretne mindent megtudhat intelligens vorstke, rendszeres script, kecses degradáció, trükkök és technológiák dolgozó tervező? Küldj kérdéseket.
Az automatikus túlterhelés funkciók működnek húrok PHP lehet állítani mbstring.func_overload lehetőség 2 vagy több. Így sokkal könnyebb élni.
Ugyanebben a cikkben meg van határozva, amely meghatározza kódolás által használt böngésző az adatátvitelhez.
Az az érzésem, az emberek gyakran nem tesznek különbséget a fogalmak a „karakterkészlet” és a „kódolás”, de hiába. A legtöbb karakterkészletek a különbség, talán kicsi, de ha foglalkozó Unicode, meg kell, hogy világosan megértse, mi micsoda. Különösen fáj ez rake megy tanulni Python nyelven.
A karakterkészlet (karakterkészlet) - egy sor ikonok, szimbólumok, minden szimbólum van hozzárendelve szám.
Kódolás (kódolás) - egy módja a közölt (azaz Coded ..), A szimbólumok sorozatát a bájtok sorozata.
Vegyünk egy pár példa.
Most tekintsük a Windows 1251. Ez a kódolás lehetővé teszi, hogy bemutassa karakter egy sor Windows-1251 formájában bájtok sorozata. Kódolás van elrendezve nagyon ésszerű - vesszük a karakter, vegye a számát, írja le a számot egy bájt! 256 karakter, számok őket 0-255, így pontosan byte illik! Hurrá!
ASCII karakterkészlet tartalmaz összesen 128 karakter. ASCII kódolás is egyszerű - venni, és levelet bájtos karakter számát. By the way, kiderül, hogy nem minden bájtsorozatok lehet tekinteni a szöveget kódolt ASCII: bájt értékek nagyobb, mint 127 nem-ASCII karaktereket nem kódolt.
Tekintettel arra, hogy ezek a karakterek kódolások rögzített csak számuk a készlet, a különbség ezek a fogalmak meglehetősen homályos. Unicode nem ez a helyzet itt, ez a különbség szignifikáns.
Unicode - egy sor karakter (számok), amelyek megpróbálják összegyűjteni az összes betűt és még több.
Encodings erre sor került egy csomó. USC-2 kódolás. például elrendezve durván, mint a Windows-1251. hogy a karakterek számát és írd két byte. Sajnos, két byte lehet írni csak értékeket 0-65535, hogy van, USC-2 segítségével kódolni csak egy része a Unicode karakterek, és még akkor is elég veszteséges módon: minden karakter, még latin, kódolják két bájt.
UTF-8 kódolással trükkösebb. Az első 128 karakter Unicode egyezik az ASCII karaktereket. Ezek UTF-8 karakter kódolást alkalmazó egyetlen bájt, így a visszafelé kompatibilitást, ha csak egy részhalmazát használja a karakterek, nincs különbség, hogy az általuk kódolt: bájtok sorozata megkapta az UTF-8 és ASCII ugyanaz. Azaz, ha Ön a ASCII kódolt és dekódolt használatával UTF-8. végül el fogja érni ugyanazt a szöveget. Mi UTF-8 teszi a többi szimbólumok, számok több mint 128 Unicode - ez egy másik érdekes téma.
Sajnos, ezek a fogalmak néha zavaros még a szabványok: az elem attribútum «charset» megadva pontosan kódolás (kódolás).
Először. problémák UTF-8 a PCP sokkal mélyebb. Egy mb_string az egység nem gyógyítja bármikor. Például, aki nem ad semmit abban az esetben, válogatás (sort, ksort és mások)
vagy használatával a fájlrendszer funkciók (például dirname), sőt, még átfedő, nem minden string függvények (például - strrev). Ahhoz, hogy a helyettesítés a funkció modul mb_string nem akadályozza meg a problémát, éppen ellenkezőleg, ez hozza őket - meg kell szem előtt tartani, milyen funkciók tartoznak, és melyek nem.
Második. szempontjából a reguláris kifejezéseket. Időtlen idők óta a PTSRE van tervez dolgozni Unicode. Például a \ PL - az összes levelet. Használd őket sokkal jobb, mint az [A-Ha -yaOo]. Ezen felül, az új verziók jelentek meg PTSRE „ige» (ige), az egyik - «(* UCP)» lehetővé teszi, hogy használja a \ w, és más kombinációk nemzeti jelképek.
Van még egy opció: nem PTSRE az alapszakaszban, és ugyanaz a mb_string, ez magában foglalja a könyvtár „Oniguruma”, a legtöbb használt regex (annak a ténynek köszönhető, hogy a nyelv nagyon kevés ember igazán tudom) erejét elég, és működik UTF-8 gyorsabb, mint PTSRE.
Senki sem említette t. N. UTF-8 BOM (angol Byte Order Mark -. Byte order mark), mely a maga "varázsa" a teljesítményét a kódot.
Azok, akik dolgoznak PHP, valószínűleg tudja, hogy van egy BOM a fájl nem teszi lehetővé, hogy küldjön fejlécek, kivéve, ha kifejezetten engedélyezi pufferelés ob_start (). Továbbá, ha egy fájlt zainklyudit között a meglévő HTML-kódot. A BOM találkozol egy helyen inklyuda, akkor is, ha a fájl üres.
Sok nyelv rendszer szinten (szemben a PHP) vágni a címkét, ami lehetővé teszi, hogy felejtsd el a problémákat.
Minden PHP-fejlesztő legyen a kebelén egy ilyen funkció, kimetszés marker a fájl elején
funkció removeBOM ($ str), ha (substr ($ str, 0, 3) == csomag ( «CCC», 0xEF, 0xBB, 0xBF)) $ str = substr ($ str, 3);
>
By the way, a W3C érvényesítő fogja tanácsolni, hogy vegye ki, ha eleget tesz a validiruemom fájlt.
A fejlődő webes felületek 69
nemrég felszínre
A legtöbb Novodmitrovskaya utca 36, az épület 2
Budapest, Hungary, 127015