Ce codificare este mai bine pentru a face un site

Pentru mine răspunsul este evident: necesitatea de a utiliza UTF-8.

Inițial, programatorii în jurul textului codificat, nu gândesc la faptul că există și alte limbi cu simboluri lor în lume. Când lumea digitală unit pe internet, necesitatea de a afișa literele și paginile, astfel încât acestea să poată fi citite sau scrie pe orice calculator din lume. Astfel a apărut pagina de cod sau o codificare. Ca meta-informații sunt atașate la fiecare text, spunând, browser-ul sau o aplicație e-mail cum să decodeze octeți la caractere. Nu este surprinzator, este adesea uitat pentru a specifica codificarea sau în neregulă cu ea. Programele au trebuit să învețe să-i identifice în mod automat, care nu a fost întotdeauna posibil. Ea a devenit foarte clar că lumea are nevoie de o esperanto digitală. În cazul în care rolul limbii esperanto obișnuit înțeles eșec epic, tehnologia informației a devenit un panaceu. Doar sună-l Unicode.

Versiunea cea mai promițătoare a Unicode UTF-8 a devenit. El obratnosovmestim cu ASCI-codificate. Ea nu se rupe dacă șirul este găsit caracter incorect, și are o dimensiune dinamică cod de caractere de la unu la șase octeți.

Există câteva lucruri de reținut atunci când se lucrează cu Unicode. trece întotdeauna codare de la server la HTTP -zagolovkah și specificați-o în meta tag-uri.

În plus htmlek, trebuie să vă asigurați că fișierele yavasksiptami și stiluri, de asemenea, este de codificare corectă. Exemplul .htaccess pentru Apache:

Dacă scrieți în Ruby, nu uitați să pună la începutul fișierului

Cele mai mari probleme cu procesarea UTF-8 în PCP. În primul rând. Trebuie să folosim MB-analogi ai funcțiilor de coarde, cum ar fi: mb_substr. în loc de substr. Pentru acest mbstring modul trebuie să fie încărcate în PCP de execuție. Ai putea chiar pur și simplu setați-l pentru a lucra cu codificarea dorită: În al doilea rând. există unele probleme cu caractere non-latine în expresii regulate. De exemplu, chiar și atunci când specificați modificatorul u, literele românești nu sunt incluse în \ w. Prin urmare, acestea ar trebui să indice în mod clar [A-Ha -yaOo] (cod g litere nu merge în spatele mii în tabel, astfel încât acesta se adaugă separat).

Codul, găsirea toate cuvintele într-un rând și le-a pus în meciurile $ variabila

kolleyshn corectă ne permite să ia în considerare lit.g. e și toți ceilalți care le place, același simbol. Acest lucru înseamnă că căutare full-text va da aceleași rezultate pentru interogarea „copac“ și „copac“.

După ce am avut o sarcina de a converti toate fișierul CDDB tracklists albume în UTF-8. 99,9% dintre fișierele care codifică chardet identificate corect.

Am oferi consilieri de renume pentru a partaja alte nuanțe de lucru cu UTF-8.

Acesta a fost sfatul cu privire la dezvoltarea de site-uri web. Vrei să afli totul despre vorstke inteligent, script-ul regulat, degradarea grațioasă, trucuri și tehnologii de lucru cu un designer? Trimite întrebări.

Pentru funcții automate de suprasarcină lucra cu siruri de caractere în PHP poate fi setată opțiunea mbstring.func_overload 2 sau mai multe. Deci, mult mai ușor de a trăi.

În același articol este specificat, care determină codificare utilizat de browser pentru transmisia de date.

Sentimentul meu este, de multe ori oamenii nu fac distincție între conceptele de „set de caractere“ și „codificare“, dar în zadar. În cele mai multe seturi de caractere o diferență, poate, este mic, dar atunci când se ocupă cu Unicode, aveți nevoie pentru a înțelege în mod clar ceea ce este ceea ce. Deosebit de rănit de această grebla du-te studia limba Python.

set (setul de caractere) Caracterul - este un set de pictograme, simboluri, fiecare simbol este atribuit numărul.

Codificare (codare) - este o modalitate de a prezenta (de exemplu, Coded ..), Secvența de simboluri într-o secvență de octeți.

Luați în considerare câteva exemple.

Acum, ia în considerare Windows-1251. Această codificare vă permite să prezentați de caractere dintr-un set de Windows-1251, sub forma unei secvențe de octeți. Codificarea este aranjat foarte rezonabil - să luăm caracterul, să ia numărul lui, notați numărul într-un octet! 256 de caractere, le numere de la 0 la 255, astfel încât bytes exact se potrivesc! Ura!

set de caractere ASCII conține un total de 128 de caractere. codarea ASCII este de asemenea simplă - să ia și scrie-octet numărul de caractere. Apropo, se pare că nu orice secvență de octeți poate fi considerat un text codificat în ASCII: bytes cu valori mai mari de 127 de caractere nu-ASCII nu sunt codate.

Datorită faptului că aceste caractere codificări înregistrate doar numerele lor din setul, diferența dintre aceste concepte a fost destul de neclară. Unicode nu este cazul aici, această diferență este semnificativă.

Unicode - un set de caractere (numere), care încearcă să colecteze toate alfabete și chiar mai mult.

Codificări pentru acest set a venit mult. USC-2 codificare. de exemplu, aranjate aproximativ ca Windows 1251. să ia numărul de caractere și scrie-l ca doi octeți. Din păcate, doi octeți pot fi scrise doar valori de la 0 la 65535, care este, USC-2 vă permite să codifica doar o parte din caracterele Unicode, și chiar și atunci mod destul de nerentabilă: orice caracter, chiar și latină, sunt codificate de doi octeți.

UTF-8 codificare mai complicată. Primele 128 de caractere Unicode se potrivesc cu caracterele ASCII. Aceste caractere UTF-8 sunt codificate ca un singur octet, prin urmare, compatibilitatea inversă, dacă vom folosi doar un subset de caractere, nu există nici o diferență în modul în care acestea codifică: o secvență de octeți primiți folosind UTF-8 și ASCII este același. Asta este, dacă luați textul ASCII codificat și decodificată utilizând UTF-8. vei primi în cele din urmă același text. Ce UTF-8 face cu restul simbolurilor, numerele sunt mai mult de 128 Unicode - acesta este un alt subiect fascinant.

Din păcate, aceste concepte sunt uneori confundate chiar și în standardele: elementul atribut specificat exact codare (codare) «charset».

În primul rând. Probleme cu UTF-8 în PCP este mult mai profundă. Un mb_string unitatea lor nu se va vindeca în orice moment. De exemplu, el nu a dat nimic în cazul de sortare (sortare, ksort și altele)
sau prin utilizarea funcțiilor sistemului de fișiere (de exemplu dirname), în plus, nu toate funcțiile, chiar se suprapun șir (de exemplu - strrev). Așa că înlocuirea modulului mb_string funcții nu împiedică problemele, dimpotrivă, le aduce - trebuie să țină cont de ceea ce caracteristici sunt acoperite și care nu sunt.

În al doilea rând. termeni de expresii regulate. Din cele mai vechi timpuri în PTSRE au modele pentru a lucra cu Unicode. De exemplu, \ pl - toate scrisorile. Utilizați-le mult mai bine decât [A-Ha -yaOo]. În plus, noile versiuni au apărut PTSRE „verbe» (verbe), unul dintre ei - «(* UCP)» vă permite să includeți \ w, și alte combinații de simboluri naționale.

Există, de asemenea, o altă opțiune: să nu utilizați PTSRE în sezonul regulat, și aceeași mb_string, aceasta include o bibliotecă de „Oniguruma“, regex cel mai utilizat (datorită faptului că limba lor foarte puțini oameni știu cu adevărat) suficient de puterea ei, și de lucru cu UTF-8 este mai rapid decât PTSRE.

Nimeni nu t menționat. N. UTF-8 BOM (Engleză Byte Order Mark -. Marca de ordine Byte), care aduce sale "farmec" în performanța codului.

Cei care lucrează cu PHP, probabil, știu că are o BOM în fișierul nu permite să trimită antete, decât dacă activați în mod explicit prin tamponare ob_start (). De asemenea, în cazul în care un fișier zainklyudit între codul HTML existent. BOM vă întâlni într-un loc inklyuda, chiar dacă fișierul este gol.

Multe limbi la nivel de sistem (spre deosebire de PHP) taie eticheta, permițând astfel să uite de probleme.

Fiecare PHP-dezvoltator ar trebui să fie în sânul unei astfel de funcții, marker de excizia la începutul fișierului

Funcția removeBOM ($ str) if (substr ($ str, 0, 3) == pachet ( «CCC», 0xEF, 0xBB, 0xBF)) $ str = substr ($ str, 3);
>


Apropo, validatorul W3C vă va sfătui să-l eliminați în cazul în care se întâlnește în fișierul validiruemom.

Dezvoltarea interfețe web 69

recent ieșit la suprafață

Cele mai multe strada Novodmitrovskaya, 36, construirea 2
București, România, 127015