Suportul pentru diacritice în site-urile web
Posted on June 26th, 2007 in Articole, Developer |
De ceva timp m-am gândit să fac efortul de a scrie conţinut cu diacritice. Este parcă mai uşor de citit şi în acelaşi timp şi respect pentru cititor. Nivelul tehnic permite de mult timp introducerea diacriticelor în materialele pe care le manevrăm (documente, e-mail-uri etc.), dar majoritatea dintre noi preferă o scriere simplificată a limbii române, din motiv de comoditate ce se traduce în rapiditate. Utilizarea de tastaturi necompatibile cu limba română “ajută” situaţia, problema fiind rezolvată pe parte de software în aceste cazuri.
Am să scriu aici câteva cuvinte despre seturi de caractere, metode de implementare în paginile web, probleme ce se pot ivi, cum tratează motoarele de căutare diacriticile, iar la sfârşit voi oferi diverse referinţe către site-uri ce aprofundează acest subiect.
Scurt istoric şi problematici
Acum 15-20 de ani, folosirea de caractere cu diacritice şi alte caractere speciale era o problemă, dar astăzi există suport pentru limbi exotice, darămite pentru caracterele speciale româneşti. Alfabetul cu care poate lucra un mediu are la bază un set de caractere, codificare sau encoding (în engleză există mai multe sinonime: codepage, encoding, charset, character set, coded character set, (CCS), graphic character set, character map). Un astfel de set, asociază un caracter (literă, cifră, asocieri speciale de litere sau simboluri) cu un anumit cod, aceste reprezentări fiind folosite intern de sistemele de operare pentru stocarea, manipularea şi transmiterea textului. Un text care foloseşte un anumit encoding, poate fi decodificat prost folosind alt set de caractere decât cel în care a fost codificat. De aceea, în unele pagini web sau aplicaţii, caracterele cu diacritice, deşi sunt folosite, sunt afişate incorect.
Setul ASCII (American Standard Code for Information Interchange), publicat pentru prima dată în 1963, implementează o codificare pe 7 biţi ce suportă doar 128 de caractere (un singur caracter este codificat folosind o secvenţa binară de 7 biţi - doar 0 şi 1, iar cel mai mare număr în binar ce se poate forma este 1111111; 1111111(2)=127(10)). Au apărut diverse extinderi al acestui set, toate având drept corp principal caracterele de la 0 la 127, din setul de bază.
În timp, au fost dezvoltate o serie de alte seturi, ce foloseau diverse implementări. Acest lucru a dus la tot felul de ambiguităţi şi incompatibilităţi, de unde şi nevoia tot mai stringentă pentru standardizare. Au apărut astfel diverse standarde, printre care şi Windows-125x (x={0, …, 8}), ISO-8859y (y={0, …, 16}), Unicode, UCS (Universal Character Set) introdus de ISO/IEC, Mac OS Roman ş.a.. Cele care au câştigat teren sunt Unicode şi standardul similar ISO 10646 UCS; sunt şi cele care suportă o plajă mare de caractere având şi posibilitatea de combinare a unor semne pentru obţinere a unui caracter nou. Acestea au fost adoptate şi de giganţii software ca Microsoft, Apple, IBM, Oracle (ş.a.) şi sunt incluse în produsele lor.
Caracterele Ş, ş, Ţ, ţ au fost introduse mai târziu, problema fiind soluţionată în anul 1987 de standardul ISO 8859‑2, cu detaliul că în loc de virgulă, caracterul folosea o sedilă, lucru contestat, dar reparat mult mai târziu. Institutul de Lingvistică al Academiei Române a specificat clar în 2003 că utilizarea virgulei şi nu a sedilei este conformă cu limba scrisă. Sistemele Windows, până la versiunea XP, nu oferă suport nativ pentru caracterele cu virgulă, nerespectând astfel standardul românesc SR 13411:1999. Apar astfel discrepanţe între utilizarea caracterelor cu sedilă şi a celor cu virgulă, vizibile, de exemplu, între transferul unui document de pe un sistem de operare în care standardul românesc este respectat pe sistemul de operare Windows, unde în locul caracterului potrivit care nu este recunoscut apare un pătrăţel sau un caracter nepotrivit. Probleme pot să apară la căutarea pe internet sau chiar în sistemul bancar. Am înţeles că Windows Vista ar fi rezolvat această problemă. Am găsit un articol excelent care tratează această problematică. Ş-urile şi Ţ-urile din acest post sunt cu sedilă.
O alta problemă ce poate apărea este ca fontul folosit în pagină să nu cunoască unele caractere ce folosesc diacritice. Majoritatea fonturilor ce se instaleaza automat cu Microsoft Windows pot.
Suportul pentru diacritice într-o pagină (X)HTML
Suportul poate fi introdus în mai multe feluri.
Prima metodă, destul de nesigură şi pe care nu o recomand, este introducerea caracterelor speciale direct în fişierul sursă, dar rămâne la latitudinea browser-ului de a detecta encoding-ul corect, lucru pe care poate să-l facă şi vizitatorul paginii respective, accesând opţiunile corespunzătoare din browser. Această metodă nu conferă suport pentru publicul universal, în special pentru utilizatorul neiniţiat sau cel comod, care prefera să navigheze către altă locaţie, neaşteptând să vadă ce-i cu pagina.
A doua metodă, ce vine ca o completare la prima (elimină nesiguranţa generată de prima metodă) este indicarea encoding-ului potrivit, lucru pe care majoritatea mediilor de dezvoltare moderne îl face. Pentru selecţia codificării, se introduce între tag-urile <head> şi </head> linia:
<meta http-equiv="Content-Type" content="text/html; charset=xxx" />
În loc de xxx, se scrie numele codificării dorite, de exemplu: iso-8859-2. Dacă foloseşti această metodă, codificările care afişează corect caracterele cu diacritice sunt iso-8859-2, iso-8859-16 şi windows-1250. Recomand această metodă.
A treia metodă, care o exclude pe primele două, este forţarea afişării caracterelor respective, folosind codul Unicode corespunzător. Această metodă este destul de ineficientă, dar poate fi pusă în aplicare folosind o funcţionalitate gen “Search and Replace”.
Iată tabelul cu caracterul şi codul corespunzător lui:
| Caracterul | Codul Unicode |
| Ă | Ă |
| ă | ă |
| Â | Â |
| â | â |
| Î | Î |
| î | î |
| Ş (S mare cu sedilă) | Ş |
| ş (s mic cu sedilă) | ş |
| Ș (S mare cu virgulă) | Ș |
| ș (s mic cu virgulă) | ș |
| Ţ (T mare cu sedilă) | Ţ |
| ţ (t mic cu sedilă) | ţ |
| Ț (T mare cu virgulă) | Ț |
| ț (t mic cu virgulă) | ț |
Notă: Este tolerată oricare dintre scrierile cu sedilă sau virgulă, dar afişarea caracterelor cu virgulă poate fi o problemă, cum probabil este dacă vezi această pagină cu Internet Explorer 6 (ce nu oferă niciun encoding mulţumitor pentru a afişa caracterele). Recomand Mozilla Firefox în această situaţie.
Este folosirea diacriticelor anti-SEO?
Acesta este, poate, un alt motiv pentru care nu vedem diacritice prea des pe internet. Webmasterii preferă o versiune fără diacritice pentru a fi siguri că pagina lor nu este în dezavantaj faţă de altele, din punct de vedere al interacţiunii cu motoarele de căutare.
Google a declarat că motorul lor de căutare consideră să afişeze ca rezultate pentru o căutare cu diacritice, pagini ce conţin termenii cu diacritice, dar şi pe cei fără. Exprimarea lor este totuşi cam ambiguă. Făcând propriile teste, am remarcat că existe mici diferenţe pentru termeni mai particulari, dar diferenţe mari pentru termeni mai generali (testul cautare vs. căutare). Rezultatele cu/fără diacritice depind mult şi de versiunea locală de Google folosită. Urmând testul de mai sus, căutaţi după termenul “cautare” în Google.com - rezultatele se schimbă.
Pe de altă parte, motorul de căutare Yahoo! Search afişează rezultate indiferent de diacritice pentru un şir de căutare fără diacritice, dar un string cu diacritice înseamnă o rafinare a căutării şi va întoarce rezultate numai cu diacritice. Pentru a forţa găsirea de rezultate după forma exactă a unui cuvânt dat, se pune “+” în faţa cuvântului în Google.
Consider că folosirea de diacritice poate fi periculoasă pentru nişte site-uri care vor să se asigure de acurateţea cu care sunt găsiţi dupa anumite keyword-uri bine alese de ei. Dar un un site cu mult conţinut şi text, poate compensa.
Referinţe externe
Generalităţi despre seturile de caractere (encoding)
Character encoding - Wikipedia, the free encyclopedia
http://en.wikipedia.org/wiki/Character_encoding
A tutorial on character code issues
http://www.cs.tut.fi/~jkorpela/chars.html
Diacritice în programe free software
http://diacritice.sourceforge.net/
Standarde
Unicode - Wikipedia, the free encyclopedia
http://en.wikipedia.org/wiki/Unicode
Unicode Home Page
http://unicode.org/
Universal Character Set - Wikipedia, the free encyclopedia
http://en.wikipedia.org/wiki/Universal_Character_Set
Windows Code Pages
http://www.microsoft.com/globaldev/reference/wincp.mspx
ASCII - Wikipedia, the free encyclopedia
American Standard Code for Information Interchange
Suportul pentru diacritice în aplicaţii software dezvoltate în C++ cu Microsoft Visual Studio
Cheat Sheet for Unicode Enabling Microsoft C and C++ Source Code and Programs
http://www.i18nguy.com/unicode/c-unicode.html
Unicode Programming Summary (MSDN Library)
http://msdn2.microsoft.com/en-us/library/dybsewaf(vs.71).aspx
S şi T cu virgulă sau cu sedilă
ş-uri şi ţ-uri
http://www.secarica.ro/html/s-uri_si_t-uri.html
Influenţa diacriticelor asupra motoarelor de căutare
Google - Webmaster Central Blog - How search results may differ based on accented characters and interface languages
http://googlewebmastercentral.blogspot.com/2006/08/how-search-results-may-differ-based-on.html
This article is © Bogdan Ghervan.
Popularity: 100%



2 Responses
[…] şi Articol: Suportul pentru diacritice în site-urile web Tags: Blog, Download, MacBook, […]
Interesant articolul. Nu folosesc caractere strict romanesti pe website sub nicio forma.