Unicode kodlaması 2. Unicode'un oluşturulması ve geliştirilmesi için ön koşullar

Merhaba, blog sitesinin sevgili okuyucuları. Bugün sizlerle sitede ve programlarda krakozyabrların nereden geldiğini, hangi metin kodlamalarının var olduğunu ve hangilerinin kullanılması gerektiğini konuşacağız. Temel ASCII'nin yanı sıra genişletilmiş CP866, KOI8-R, Windows 1251 sürümlerinden başlayarak ve Unicode Konsorsiyumu UTF 16 ve 8'in modern kodlamalarıyla biten gelişimlerinin tarihine daha yakından bakalım.

Bazıları için bu bilgi gereksiz görünebilir, ancak özellikle sürünen krakozyabrs (okunamayan bir karakter seti) ile ilgili olarak kaç soru aldığımı bilirsiniz. Şimdi herkesi bu makalenin metnine yönlendirme ve bağımsız olarak sövelerimi arama fırsatına sahip olacağım. Pekala, bilgileri özümsemeye ve hikayenin gidişatını takip etmeye hazırlanın.

ASCII - Latince için temel metin kodlaması

Metin kodlamalarının gelişimi, BT endüstrisinin oluşumuyla eş zamanlı olarak gerçekleşti ve bu süre zarfında oldukça fazla değişiklik geçirmeyi başardılar. Tarihsel olarak, her şey, Latin alfabesinin harflerini, Arap rakamlarını ve noktalama işaretlerini kontrol karakterleriyle kodlamayı mümkün kılan, Rusça telaffuzda oldukça uyumsuz olan EBCDIC ile başladı.

Ancak yine de, modern metin kodlamalarının gelişiminin başlangıç ​​noktası, ünlü metin kodlamaları olarak kabul edilmelidir. ASCII(Rusça'da genellikle "aski" olarak telaffuz edilen Amerikan Bilgi Değişimi Standart Kodu). İngilizce konuşan kullanıcılar tarafından en yaygın olarak kullanılan ilk 128 karakteri tanımlar - Latin harfleri, Arap rakamları ve noktalama işaretleri.

ASCII'de açıklanan bu 128 karakterde bile parantez, çubuk, yıldız işareti gibi bazı hizmet karakterleri vardı. Aslında, onları kendiniz görebilirsiniz:

Standart hale gelen orijinal ASCII versiyonundaki bu 128 karakterdir ve diğer herhangi bir kodlamada kesinlikle onlarla tanışacaksınız ve bu sırayla duracaklar.

Ancak gerçek şu ki, bir baytlık bilgi yardımıyla, 128'i değil, 256 farklı değeri (iki üzeri sekizin kuvveti 256'ya eşittir) kodlamak mümkündür, bu nedenle, aşağıdaki temel sürüm Asuka bir numara çıktı genişletilmiş ASCII kodlamaları 128 temel karaktere ek olarak, ulusal kodlamanın sembollerini kodlamak da mümkündü (örneğin, Rusça).

Burada, muhtemelen, açıklamada kullanılan sayı sistemleri hakkında biraz daha fazla şey söylemeye değer. İlk olarak, hepinizin bildiği gibi, bir bilgisayar sadece ikili sistemdeki sayılarla, yani sıfırlar ve birler ile çalışır (eğer herhangi biri bir enstitüde veya okulda okuduysa “Boole cebiri”). , her biri derecede iki, sıfırdan başlayarak ve yedincide ikiye kadar:

Böyle bir yapıda tüm olası sıfır ve bir kombinasyonlarının yalnızca 256'sının olabileceğini anlamak zor değil. İkili sistem ondalık yapmak oldukça kolaydır. Sadece üzerinde bir olan ikinin tüm güçlerini toplamanız gerekiyor.

Örneğimizde, bu 1 (2 üzeri sıfır) artı 8 (iki üzeri 3), artı 32 (iki üzeri beşinci), artı 64 (altıncı üzeri), artı 128 (yedinci üzeri) . Toplam 233 alır ondalık sistem hesaplaşma. Gördüğünüz gibi, her şey çok basit.

Ancak ASCII karakterlerinin bulunduğu tabloya daha yakından bakarsanız, bunların onaltılık kodlamada temsil edildiğini göreceksiniz. Örneğin, "yıldız" Asci'de 2A onaltılık sayıya karşılık gelir. Muhtemelen bunu biliyorsun onaltılık sistem Rakamlar, Arap rakamlarına ek olarak, A'dan (on anlamına gelir) F'ye (onbeş anlamına gelir) kadar Latin harfleri de kullanılır.

Eh, için ikiliyi onaltılıya çevir aşağıdaki basit ve görsel yönteme başvurunuz. Her bilgi baytı, yukarıdaki ekran görüntüsünde gösterildiği gibi, dört bitlik iki parçaya bölünmüştür. O. her yarım baytta, onaltılık bir sayı olarak kolayca temsil edilebilen ikili kodda (iki ila dördüncü güç) yalnızca on altı değer kodlanabilir.

Ayrıca, baytın sol yarısında, ekran görüntüsünde gösterildiği gibi değil, sıfırdan başlayarak dereceleri tekrar saymak gerekecektir. Sonuç olarak, basit hesaplamalarla, ekran görüntüsünde E9 sayısının kodlandığını elde ederiz. Umarım akıl yürütmemin seyri ve bu bulmacanın çözümü sizin için açık olmuştur. Şimdi, aslında, metin kodlamaları hakkında konuşmaya devam edelim.

Asuka - CP866 ve KOI8-R kodlamalarının sözde grafikli genişletilmiş sürümleri

Böylece, tüm modern kodlamaların (Windows 1251, Unicode, UTF 8) geliştirilmesinin başlangıç ​​noktası olan ASCII hakkında konuşmaya başladık.

Başlangıçta, Latin alfabesinin yalnızca 128 karakterini, Arap rakamlarını ve başka bir şeyi içeriyordu, ancak genişletilmiş sürümde, bir bayt bilgide kodlanabilen 256 değerin tümünü kullanmak mümkün oldu. Onlar. Asci'ye kendi dilinizdeki harflerin karakterlerini eklemek mümkün oldu.

Burada açıklamak için bir kez daha konunun dışına çıkmak gerekecek - Neden kodlamaya ihtiyacınız var? metinler ve neden bu kadar önemli. Bilgisayar ekranınızdaki karakterler iki şey temelinde oluşturulur - her türden karakterin vektör şekilleri (temsilleri) kümeleri (bunlar ortak dosyalardadır) ve bu vektör şekilleri kümesinden çıkarmanıza izin veren bir kod ( yazı tipi dosyası) tam olarak Doğru yere eklemeniz gereken karakterdir.

Yazı tiplerinin vektör formlarının kendisinden sorumlu olduğu açıktır, ancak kodlamadan işletim sistemi ve içinde kullanılan programlar sorumludur. Onlar. bilgisayarınızdaki herhangi bir metin, her biri bu metnin tek bir karakterini kodlayan bir bayt kümesi olacaktır.

Bu metni ekranda (metin düzenleyici, tarayıcı vb.) görüntüleyen program, kodu ayrıştırırken bir sonraki karakterin kodlamasını okur ve ilgili vektör formunu içinde arar. istenen dosya bu metin belgesini görüntülemek için bağlanan yazı tipi. Her şey basit ve banal.

Bu, ihtiyacımız olan herhangi bir karakteri (örneğin, ulusal alfabeden) kodlamak için iki koşulun karşılanması gerektiği anlamına gelir - bu karakterin vektör biçimi kullanılan yazı tipinde olmalıdır ve bu karakter, genişletilmiş ASCII kodlamalarında kodlanabilir. bir baytta. Bu nedenle, bu tür bir sürü seçenek var. Yalnızca Rus dilinin karakterlerini kodlamak için, genişletilmiş Aska'nın birkaç çeşidi vardır.

Örneğin, başlangıçta vardı CP866 Rus alfabesinin karakterlerini kullanmanın mümkün olduğu ve ASCII'nin genişletilmiş bir versiyonuydu.

Onlar. üst kısmı, hemen yukarıdaki ekran görüntüsünde gösterilen Asuka'nın temel sürümüyle (128 Latin karakter, sayılar ve diğer saçmalıklar) tamamen çakıştı, ancak CP866 kodlamalı tablonun alt kısmı, hemen aşağıdaki ekran görüntüsünde gösterilen forma sahipti. ve başka bir 128 işaretin kodlanmasına izin verildi (Rus harfleri ve orada her türlü sözde grafik):

Sağ sütunda sayıların 8 ile başladığını görüyorsunuz, çünkü 0'dan 7'ye kadar olan sayılar, ASCII temel kısmına atıfta bulunur (ilk ekran görüntüsüne bakın). O. CP866'daki Rusça "M" harfi, bir bayt bilgi ile yazılabilen 9C koduna sahip olacaktır (ilgili satırın 9 ile ve onaltılık sayı sisteminde C numaralı sütunun kesişiminde bulunur), ve Rusça karakterlerle uygun bir yazı tipi varsa, metinde bu harf sorunsuz olarak gösterilecektir.

Bu miktar nereden geldi? CP866'da sözde grafikler? Mesele şu ki, Rusça metin için bu kodlama, şu anda olduğu gibi grafik işletim sistemlerinin dağıtımının olmadığı o tüylü yıllarda geliştirildi. Ve Dosa'da ve benzeri metin işletim sistemlerinde, sözde grafikler, metinlerin tasarımını bir şekilde çeşitlendirmeyi mümkün kıldı ve bu nedenle CP866'da ve Asuka'nın genişletilmiş sürümleri kategorisindeki diğer tüm akranlarında bol miktarda bulunur.

CP866, IBM tarafından dağıtıldı, ancak bunun yanı sıra, Rusça karakterler için bir dizi kodlama geliştirildi, örneğin, aynı tür (genişletilmiş ASCII) atfedilebilir KOI8-R:

Çalışma prensibi biraz daha önce açıklanan CP866 ile aynı kalır - metnin her karakteri tek bir bayt ile kodlanır. Ekran görüntüsü KOI8-R tablosunun ikinci yarısını gösterir, çünkü ilk yarı, bu makaledeki ilk ekran görüntüsünde gösterilen temel Asuka'ya tamamen karşılık gelir.

KOI8-R kodlamasının özellikleri arasında, tablosundaki Rusça harflerin, örneğin CP866'da yapıldığı gibi alfabetik sırada olmadığı belirtilebilir.

İlk ekran görüntüsüne bakarsanız (tüm genişletilmiş kodlamalara dahil olan temel kısmın), KOI8-R'de Rusça harflerin, Latin alfabesi ünsüz harfleriyle tablonun aynı hücrelerinde bulunduğunu fark edeceksiniz. tablonun ilk bölümünden onlarla. Bu, yalnızca bir bit (iki ila yedinci güç veya 128) atılarak Rusça'dan Latince karakterlere geçiş kolaylığı için yapıldı.

Windows 1251 - ASCII'nin modern versiyonu ve neden krakozyabry sürünüyor?

Metin kodlamalarının daha da geliştirilmesi, grafik işletim sistemlerinin popülerlik kazanması ve bunlarda sözde grafik kullanma ihtiyacının zamanla ortadan kalkması nedeniyle oldu. Sonuç olarak, özünde hala Asuka'nın genişletilmiş sürümleri olan (bir metin karakteri yalnızca bir bayt bilgi ile kodlanır), ancak psödografik karakterler kullanmadan bütün bir grup ortaya çıktı.

Amerikan Standartları Enstitüsü tarafından geliştirilen sözde ANSI kodlamalarına aittiler. Genel tabirle, Kiril adı, Rus dilini destekleyen varyant için de kullanıldı. Bunun bir örneği hizmet edebilir.

Daha önce kullanılan CP866 ve KOI8-R ile olumlu bir şekilde karşılaştırır, çünkü içindeki psödografik sembollerin yerinin Rus tipografisinin eksik sembolleri (vurgu işareti dışında) ve Slav dillerinde kullanılan semboller tarafından alınmasıdır. Rusça (Ukraynaca, Belarusça, vb.):

Bu kadar çok sayıda Rus dili kodlaması nedeniyle, yazı tipi üreticileri ve üreticileri yazılım sürekli bir baş ağrısı ortaya çıktı ve biz sevgili okuyucular, aynı kötü şöhreti sık sık çıkardık krakozyabry metinde kullanılan sürümle ilgili bir karışıklık olduğunda.

Çok sık mesaj gönderirken ve alırken çıktılar. e-posta, aslında bu sorunu kökünde çözemeyen çok karmaşık dönüşüm tablolarının oluşturulmasını gerektirdi ve kullanıcılar genellikle CP866, KOI8-R veya Windows 1251 gibi Rus kodlamalarını kullanırken kötü şöhretli krakozyabrlardan kaçınmak için yazışmalar için kullandılar.

Aslında, Rusça metin yerine krakozyabry tırmandı, sonuç oldu. yanlış kullanım kodlamalar verilen dil, kodlandığı ile eşleşmeyen SMS ilk olarak.

Diyelim ki CP866 ile kodlanmış karakterler kullanılarak görüntülenmeye çalışılıyorsa kod tablosu Windows 1251, daha sonra bu aynı krakozyabry (anlamsız karakter kümesi) çıkacak ve mesajın metnini tamamen değiştirecektir.

Benzer bir durum, forumlarda veya bloglarda, Rusça karakterli metinler yanlışlıkla sitede varsayılan olarak kullanılan yanlış kodlamaya veya yanlış kodlamaya kaydedildiğinde ortaya çıkar. Metin düzelticiçıplak gözle görülemeyen koda tıkaç ekler.

Sonunda, birçok insan böyle bir durumdan çok fazla kodlama ile bıktı ve sürekli krakozyabry'den çıktı, mevcut olanların yerini alacak ve sonunda sorunu okunamayan metinlerin ortaya çıkmasıyla çözecek yeni bir evrensel varyasyon yaratmanın ön koşulları vardı. . Ayrıca, dilin karakterlerinin 256'dan çok daha fazla olduğu Çince gibi dillerin sorunu vardı.

Unicode (Unicode) - evrensel kodlamalar UTF 8, 16 ve 32

Güneydoğu Asya dil grubunun bu binlerce karakteri, ASCII'nin genişletilmiş sürümlerinde karakterleri kodlamak için ayrılan bir bayt bilgi ile hiçbir şekilde tanımlanamadı. Sonuç olarak, bir konsorsiyum olarak adlandırılan tek kod(Unicode - Unicode Konsorsiyumu) ​​evrensel bir metin kodlamasının ortaya çıkmasıyla ilgilenen birçok BT endüstrisi liderinin (yazılım üretenler, donanımı kodlayanlar, yazı tiplerini oluşturanlar) işbirliğiyle.

Unicode Konsorsiyumu'nun himayesinde piyasaya sürülen ilk varyasyon, UTF-32. Kodlama adındaki sayı, bir karakteri kodlamak için kullanılan bit sayısı anlamına gelir. 32 bit, yeni evrensel kodlama UTF'sinde tek bir karakteri kodlamak için gerekli olacak 4 baytlık bilgidir.

Sonuç olarak, ASCII'nin genişletilmiş sürümünde ve UTF-32'de kodlanmış metin içeren aynı dosya, ikinci durumda dört kat daha büyük bir boyuta (ağırlığa) sahip olacaktır. Bu kötü, ancak şimdi UTF kullanarak otuz saniyenin iki katına eşit karakter sayısını kodlama fırsatımız var ( milyarlarca karakter, bu gerçekten gerekli herhangi bir değeri büyük bir marjla kapsayacaktır).

Ancak, Avrupa grubunun dillerine sahip birçok ülkenin kodlamada bu kadar çok sayıda karakter kullanmasına gerek yoktu, ancak UTF-32 kullanırken, hiçbir şey için dört kat ağırlık artışı aldılar. metin belgeleri ve sonuç olarak, İnternet trafiğinin hacminde ve depolanan veri miktarında bir artış. Bu çok fazla ve hiç kimse böyle bir israfı karşılayamaz.

Unicode'un geliştirilmesinin bir sonucu olarak, UTF-16, o kadar başarılı oldu ki kullandığımız tüm karakterler için varsayılan taban alanı olarak kabul edildi. Bir karakteri kodlamak için iki bayt kullanır. Bu şeyin neye benzediğini görelim.

İÇİNDE işletim sistemi Windows'ta "Başlat" - "Programlar" - "Aksesuarlar" - "Yardımcı Programlar" - "Karakter Tablosu" yolunda gidebilirsiniz. Sonuç olarak, sisteminizde kurulu olan tüm yazı tiplerinin vektör şekillerinin bulunduğu bir tablo açılacaktır. Eğer " Ekstra seçenekler» Unicode karakter seti, her yazı tipi için içerdiği tüm karakter aralığını ayrı ayrı görebilirsiniz.

Bu arada, herhangi birine tıklayarak çift baytını görebilirsiniz. UTF-16 formatında kod, dört onaltılık basamaktan oluşur:

UTF-16'da 16 bit kullanılarak kaç karakter kodlanabilir? 65536 (iki üzeri on altı) ve Unicode'da temel uzay olarak kabul edilen bu sayıydı. Ek olarak, onunla yaklaşık iki milyon karakteri kodlamanın yolları vardır, ancak bir milyon karakterlik genişletilmiş bir metin alanıyla sınırlıdır.

Ancak Unicode kodlamanın bu başarılı versiyonu bile, diyelim ki sadece bir dilde programlar yazanları pek tatmin etmedi. ingilizce dili, çünkü ASCII'nin genişletilmiş sürümünden UTF-16'ya geçtikten sonra, belgelerin ağırlığı iki katına çıktı (Asci'de karakter başına bir bayt ve UTF-16'da aynı karakter başına iki bayt).

Unicode konsorsiyumundaki herkesin ve her şeyin memnuniyeti için, ortaya çıkmaya karar verildi. değişken uzunluk kodlaması. Adı UTF-8. Adındaki sekize rağmen, gerçekten değişken bir uzunluğa sahiptir, yani. her metin karakteri, bir ila altı baytlık bir diziye kodlanabilir.

Uygulamada, UTF-8'de yalnızca bir ila dört bayt aralığı kullanılır, çünkü dört baytlık kodun arkasında hiçbir şey teorik olarak hayal bile edilemez. İçindeki tüm Latin karakterleri, eski güzel ASCII'de olduğu gibi bir bayt olarak kodlanmıştır.

Dikkat çekici bir şekilde, yalnızca Latince kodlama durumunda, Unicode'u anlamayan programlar bile UTF-8'de kodlanmış olanı okuyacaktır. Onlar. Asuka'nın temel kısmı, Unicode Konsorsiyumu'nun bu buluşu haline geldi.

UTF-8'deki Kiril karakterler iki bayt olarak ve örneğin Gürcüce karakterler üç bayt olarak kodlanmıştır. Unicode Konsorsiyumu, UTF 16 ve 8'i oluşturduktan sonra ana sorunu çözdü - şimdi elimizde yazı tiplerinin tek bir kod alanı vardır. Ve şimdi üreticileri, güçlü yönlerine ve yeteneklerine dayalı olarak yalnızca vektör metin karakter biçimleriyle doldurabilirler. Şimdi setlerde bile.

Yukarıdaki “Karakter Tablosu”nda farklı yazı tiplerinin farklı sayıda karakteri desteklediğini görebilirsiniz. Bazı Unicode açısından zengin yazı tipleri çok büyük olabilir. Ancak şimdi, farklı kodlamalar için yaratıldıkları için değil, yazı tipi üreticisinin tek kod alanını bir veya başka bir vektör formuyla doldurması veya doldurmaması gerçeğinde farklılık gösteriyorlar.

Rus harfleri yerine Krakozyabry - nasıl düzeltilir

Şimdi metin yerine krakozyabraların nasıl göründüğüne veya başka bir deyişle Rusça metin için doğru kodlamanın nasıl seçildiğine bakalım. Aslında, bu aynı metni veya metin parçalarını kullanarak kod oluşturduğunuz veya düzenlediğiniz programda ayarlanır.

Düzenlemek ve oluşturmak için metin dosyalarıŞahsen çok iyi kullanıyorum bence, . Bununla birlikte, yüzlerce programlama ve işaretleme dilinin sözdizimini vurgulayabilir ve ayrıca eklentiler kullanılarak genişletilebilir. Okumak ayrıntılı genel bakış verilen bağlantıda bu harika program.

Notepad ++'ın üst menüsünde, mevcut bir seçeneği varsayılan olarak sitenizde kullanılana dönüştürme fırsatına sahip olacağınız bir "Kodlamalar" öğesi vardır:

Joomla 1.5 ve üzeri bir site olması durumunda ve WordPress'te bir blog olması durumunda, hataların ortaya çıkmasını önlemek için seçeneği seçin. Malzeme Listesi olmadan UTF8. BOM öneki nedir?

Gerçek şu ki, UTF-16 kodlamasını geliştirdiklerinde, bir nedenden dolayı, hem doğrudan sırayla (örneğin, 0A15) hem de ters (150A) bir karakter kodu yazma yeteneği gibi bir şey eklemeye karar verdiler. . Ve programların kodları hangi sırayla okuyacağını anlaması için icat edildi. malzeme listesi(Byte Order Mark veya başka bir deyişle imza), belgelerin en başına üç ek bayt eklenmesiyle ifade edildi.

UTF-8 kodlamasında, Unicode konsorsiyumunda hiçbir Malzeme Listesi sağlanmamıştır ve bu nedenle bir imza eklemek (belgenin başına bu en kötü şöhretli ek üç bayt), bazı programların kodu okumasını engeller. Bu nedenle, dosyaları UTF'ye kaydederken, her zaman BOM'suz (imzasız) seçeneği seçmeliyiz. Böylece ilerlersin kendinizi sürünen krakozyabry'den koruyun.

Dikkat çekici bir şekilde, Windows'taki bazı programlar bunu nasıl yapacaklarını bilmiyorlar (metni BOM olmadan UTF-8'de kaydedemezler), örneğin aynı kötü şöhretli Windows Not Defteri. Belgeyi UTF-8'e kaydeder, ancak yine de imzayı (üç ekstra bayt) başına ekler. Ayrıca, bu baytlar her zaman aynı olacaktır - kodu doğrudan sırayla okuyun. Ancak sunucularda, bu küçük şey yüzünden bir sorun ortaya çıkabilir - krakozyabry çıkacaktır.

Bu nedenle, hiçbir şekilde normal Windows not defteri kullanmayın krakozyabrov görünümünü istemiyorsanız sitenizin belgelerini düzenlemek için. Daha önce bahsedilen Notepad ++ düzenleyicisini, pratikte hiçbir dezavantajı olmayan ve yalnızca avantajlardan oluşan en iyi ve en basit seçenek olarak görüyorum.

Notepad++'da, bir kodlama seçtiğinizde, metni, doğası gereği Unicode standardına çok yakın olan UCS-2 kodlamasına dönüştürme seçeneğiniz olacaktır. Ayrıca Not Defteri'nde metni ANSI'de kodlamak mümkün olacaktır, yani. Rus dili ile ilgili olarak, bu, yukarıda biraz tanımladığımız Windows 1251 olacaktır.Bu bilgi nereden geliyor?

Ameliyathanenizin sicilinde kayıtlıdır. Windows sistemleri- ANSI durumunda hangi kodlamanın seçileceği, OEM durumunda hangisinin seçileceği (Rus dili için CP866 olacaktır). Bilgisayarınıza başka bir varsayılan dil yüklerseniz, bu kodlamalar, aynı dil için ANSI veya OEM kategorisinden benzerleriyle değiştirilir.

Belgeyi ihtiyacınız olan kodlamada Notepad ++ ile kaydettikten veya düzenleme için siteden açtıktan sonra, düzenleyicinin sağ alt köşesinde adını görebilirsiniz:

Krakozyabrov'dan kaçınmak için, yukarıda açıklanan işlemlere ek olarak, sitenin tüm sayfalarının kaynak kodunun başlığına bu kodlama hakkında bilgi yazmanız, sunucu veya yerel ana bilgisayar üzerinde herhangi bir karışıklık olmaması için faydalı olacaktır.

Genel olarak, Html dışındaki tüm köprü metni biçimlendirme dillerinde, metin kodlamasını belirten özel bir xml bildirimi kullanılır.

Kodu ayrıştırmadan önce, tarayıcı hangi sürümün kullanıldığını ve o dilin karakter kodlarının tam olarak nasıl yorumlanması gerektiğini bilir. Ancak dikkat çekici olan, belgeyi varsayılan unicode'da kaydederseniz, bu xml bildirimi atlanabilir (BOM yoksa kodlama UTF-8 veya bir Malzeme Listesi varsa UTF-16 olarak kabul edilir).

Bir belge durumunda HTML dili kodlamayı belirtmek için kullanılır meta öğe, açılış ve kapanış Head etiketi arasına yazılan:

... ...

Bu giriş, içinde kabul edilenden oldukça farklıdır, ancak yavaş yavaş tanıtılan yeni Html 5 standardı ile tamamen uyumludur ve onu kullanan herkes tarafından kesinlikle doğru bir şekilde anlaşılacaktır. şu an tarayıcılar.

Teoride, kodlamaya sahip Meta öğesi html belgesi koymak daha iyi olur belgenin başlığında mümkün olduğunca yüksek bu nedenle, toplantı sırasında, temel ANSI'den değil (her zaman doğru ve herhangi bir varyasyonda okunacak olan) ilk karakter metninde, tarayıcının bu karakterlerin kodlarının nasıl yorumlanacağı hakkında zaten bilgiye sahip olması gerekir.

Sana iyi şanslar! Yakında blog sayfaları sitesinde görüşürüz

ilgini çekebilir

Ne oldu URL adresi Bir site için mutlak ve göreli bağlantılar arasındaki fark nedir?
OpenServer - modern Yerel sunucu ve kullanımına bir örnek WordPress kurulumları bilgisayarda
Chmod nedir, dosya ve klasörlere (777, 755, 666) hangi izinler atanır ve PHP ile nasıl yapılır
Sitede ve çevrimiçi mağazada Yandex araması

İnternetin bu veya bu işlevini yapılandırma girişiminde, herhangi bir kullanıcı "Unicode" gibi bir kavramla karşılaşmış olmalıdır. Bu kavramın ne anlama geldiğini öğrenmek için, okuyun Bu makale bitirmek için.

"Unicode": tanım

Bugün "Unicode" terimi, bir karakter kodlama standardını ifade eder. Bu standart 1991 yılında kar amacı gütmeyen kuruluş Unicode Inc. tarafından önerildi. Unicode standardı, çok sayıda farklı karakteri tek bir belgede birleştirmek için tasarlanmıştır. Böyle bir kodlama temelinde oluşturulan bir sayfa hiyeroglifler, harfler ve matematiksel semboller içerebilir. Bu kodlamada tüm karakterler sorunsuz bir şekilde görüntülenir.

"Unicode": oluşturma nedenleri

Unicode sisteminin ortaya çıkmasından çok önce, belgenin yazarının tercihlerine göre kodlamalar seçildi. Çoğu zaman bu nedenle bir belgeyi okumak için farklı tablolar kullanmak gerekiyordu. Ancak bunun birkaç kez yapılması gerekiyordu. Bu, sıradan kullanıcıların hayatını önemli ölçüde karmaşıklaştırır. Daha önce de belirtildiği gibi, 1991 yılında bu sorunu çözmek için kar amacı gütmeyen Unicode Inc. yeni bir bilgi kodlama türü kullanılması önerildi. Bu tip kodlama, çok çeşitli standartları birleştirmek için oluşturuldu. Unicode kodlama, imkansızı başarmayı mümkün kıldı: çok çeşitli karakterleri destekleyen bir araç yaratmak. Sonuç beklentileri aştı: aynı anda hem Rusça hem de İngilizce metnin yanı sıra matematiksel ifadeler ve Latince içerebilen belgeler elde edildi. oluşturmadan önce birleşik sistem kodlama geliştiricileri, halihazırda mevcut olan çok sayıda standardın varlığından kaynaklanan bir takım sorunları çözmek zorunda kaldı. şu an. Bu sorunlardan en yaygın olanı karakter kümesi sınırlamaları, elf yazılar, yazı tipi çoğaltma ve farklı kodlamaları dönüştürme sorunuydu.

"Unicode": tarihe bir araştırma

Şu resmi hayal edin: 80'lerin avlusunda bilgisayar teknolojisi henüz bu kadar yaygınlaşmamış ve günümüzden farklı bir görünüme sahip. Her işletim sistemi kendi yolunda benzersizdir ve meraklılar tarafından belirli özel ihtiyaçlar için değiştirilir. Sonuç olarak, bilgi alışverişi ihtiyacı ek iyileştirmelere yol açmıştır. Başka bir işletim sisteminde oluşturulmuş bir belgeyi okumaya çalışırken, genellikle ekranda garip karakter setleri görüntüleniyordu. Bu, hızlı bir şekilde tamamlanması her zaman mümkün olmayan kodlama ile daha fazla çalışmayı gerektiriyordu. Bazen gerekli belgeyi işlemek birkaç ay sürdü. Sık sık bilgi alışverişi yapmak zorunda kalan kullanıcılar, kendilerine özel dönüşüm tabloları oluşturmaya başladılar. Bu tür tablolarla çalışmak ilginç bir özelliği ortaya çıkardı: bu tür tabloları aynı anda iki yönde oluşturmak gerekiyor. Makine, hesaplamaların banal ters çevrilmesini gerçekleştiremez. Bunun için kaynak dosya sağ sütuna, sonuç ise sol sütuna yazılır. Aksine, yeniden düzenlenemezler. Belgede bazı özel karakterler kullanmanız gerekiyorsa, önce bunları eklemeniz ve ardından "çatlaklara" dönüşmemesi için başka bir kullanıcıya bunlarla ne yapılması gerektiğini açıklamanız gerekir. Ayrıca, her kodlamanın kendi yazı tiplerini geliştirmesi gerektiğini düşünmeye değer. Bu, işletim sisteminde çok sayıda kopya oluşturulmasına yol açtı. Böylece, örneğin, bir sayfada, kullanıcı standart Times New Roman ile aynı, ancak UCS-2, UTF-16, UTF-8, ANSI ile işaretlenmiş bir düzine yazı tipi görebilir. Bu nedenle, evrensel bir standart geliştirmeye ihtiyaç vardır.

"Unicode": yaratıcılar

"Unicode" oluşturma tarihinin başlangıcı 1987'ye atfedilebilir. O zaman Xerox'tan Joe Becker, Apple'dan Mark Davis ve Lee Collins ile birlikte evrensel bir kodlamanın pratik gelişimi üzerine araştırmalara başladı. 1988'de Joe Becker, uluslararası bir çok dilli kodlama için bir plan yayınladı. Birkaç ay sonra, çalışan Unicode geliştirme grubu genişletildi. Sun Microsystems'den Glenn Wright, RLG'den Mike Kernegan ve Ken Whistler gibi uzmanları içeriyordu. Bu, tek bir kodlama standardının ön oluşumu üzerinde çalışmayı tamamlamayı mümkün kıldı.

"Unicode": genel bir açıklama

Unicode dayanmaktadır Genel kavram sembol. Bu tanım, yazı biçiminde var olan, çizgeler aracılığıyla gerçekleşen soyut bir olgu olarak anlaşılmaktadır. Unicode'da, her karaktere standardın bir veya başka bloğuna ait benzersiz bir kod atanır. Bu nedenle, örneğin, "B" grafiği hem İngilizce hem de Rusça'da bulunur, ancak iki farklı karaktere karşılık gelir. Bu karakterler de küçük harfe dönüştürülebilir. Bu, bu simgelerin her birinin bir anahtar, bir dizi özellik ve bir adla tanımlandığı anlamına gelir.

"Unicode": avantajlar

Unicode, diğer modern kodlama sistemlerinden, çeşitli karakterleri "şifrelemek" için çok sayıda karakter sağlamasıyla farklıdır. Mesele şu ki, önceki kodlamaların sadece 8 biti vardı. Bu, yalnızca 28 karakteri destekledikleri anlamına gelir. Yeni geliştirmede 216 karakter vardı ve bu ileriye doğru büyük bir adımdı. Böylece neredeyse tüm mevcut alfabeleri kodlamak mümkün hale geldi. "Unicode" un ortaya çıkmasıyla dönüşüm tablolarını kullanma ihtiyacı ortadan kalktı. Tek bir standardın varlığı, onların faydasını basitçe sıfıra indirdi. Aynı zamanda "kryakozyabry" da ortadan kayboldu. Yeni bir standardın ortaya çıkması onların varlığını imkansız hale getirdi. Yinelenen yazı tipleri oluşturma ihtiyacı da ortadan kaldırıldı.

"Unicode": geliştirme

İlerlemenin durmamasına rağmen, Unicode kodlaması dünyada lider konumunu korumaya devam ediyor. Bu, büyük ölçüde kolayca uygulanması ve yaygın olarak kullanılması nedeniyle mümkün oldu. Ancak 25 yıl önceki Unicode kodlamasının bugün de kullanıldığı sanılmamalıdır. Bugün 5.x.x sürümü kullanılmaktadır. Kodlanmış karakter sayısı 231'e yükseldi. Başlangıcından 2.0.0 sürümünün ortaya çıkışına kadar Unicode kodlama, içerdiği karakter sayısını neredeyse iki katına çıkardı. Sonraki yıllarda, fırsatların bu büyümesi devam etti. 4.0.0 sürümü ortaya çıktığında, standardın kendisini artırmak gerekli hale geldi. Sonuç olarak, Unicode kodlaması bugün bildiğimiz biçimi aldı.

Unicode'da başka ne işe yarar? Sürekli artan karakter sayısına ek olarak, Unicode kodlamanın oldukça kullanışlı bir özelliği vardır. Bu normalleşmedir. Kodlama, farklı alfabelerde benzer yazımlara sahip olabilecek aynı karakterin düzenli olarak kontrol edilmesiyle bilgisayar kaynaklarını boşa harcamaz. Bu amaçla, her seferinde tüm bilgileri kontrol etmek yerine, benzer karakterleri bir sütunda ayrı ayrı görüntülemeyi ve bunlara erişmeyi mümkün kılan özel bir algoritma kullanılır. Toplamda, bu tür dört algoritma geliştirilmiş ve uygulanmıştır. Her birinde dönüşüm, diğerlerinden farklı olan belirli bir ilkeye göre gerçekleştirilir.

Her İnternet kullanıcısı, işlevlerinden birini veya diğerini yapılandırma girişiminde en az bir kez ekranda "Unicode" yazılı kelimesini gördü. Nedir, bu makaleyi okuyarak öğreneceksiniz.

Tanım

Unicode, bir karakter kodlama standardıdır. Kar amacı gütmeyen kuruluş Unicode Inc. tarafından önerildi. 1991 yılında. Standart, tek bir belgede mümkün olduğu kadar çok farklı karakter türünü birleştirmek amacıyla geliştirilmiştir. Buna dayalı bir sayfa, farklı dillerden (Rusça'dan Korece'ye) harfler ve hiyeroglifler ve matematiksel semboller içerebilir. Bu durumda, bu kodlamadaki tüm karakterler sorunsuz bir şekilde görüntülenir.

Yaratılış nedenleri

Bir zamanlar, birleşik Unicode sisteminin ortaya çıkmasından çok önce, kodlama, belgenin yazarının tercihlerine göre seçildi. Bu nedenle, tek bir belgeyi kullanarak okumak nadir değildi. farklı tablolar. Bazen bunun birkaç kez yapılması gerekiyordu, bu da sıradan bir kullanıcının hayatını önemli ölçüde karmaşıklaştırdı. Daha önce de belirtildiği gibi, 1991 yılında kar amacı gütmeyen kuruluş Unicode Inc. tarafından yeni bir karakter kodlaması türü öneren bu soruna bir çözüm önerildi. Eski ve çeşitli standartları birleştirmeyi amaçladı. "Unicode", o sırada düşünülemez olanı elde etmeyi mümkün kılan bir kodlamadır: çok sayıda karakteri destekleyen bir araç oluşturmak. Sonuç birçok beklentiyi aştı - aynı anda hem İngilizce hem de Rusça metin, Latince ve matematiksel ifadeler içeren belgeler ortaya çıktı.

Ancak, tek bir kodlamanın oluşturulmasından önce, o sırada zaten var olan çok çeşitli standartlar nedeniyle ortaya çıkan bir dizi sorunu çözme ihtiyacı vardı. Bunlardan en yaygın olanları:

  • elf harfleri veya "krakozyabry";
  • sınırlı karakter seti;
  • kodlama dönüştürme sorunu;
  • yinelenen yazı tipleri

Küçük bir tarihi gezi

80'lerde olduğunu hayal edin. Bilgisayar Teknolojisi henüz çok yaygın değil ve bugünden farklı bir görünüme sahip. O zaman, her işletim sistemi kendi yolunda benzersizdir ve her meraklı tarafından belirli ihtiyaçlar için değiştirilir. Bilgi paylaşma ihtiyacı, dünyadaki her şeyin ek bir iyileştirmesine dönüşür. Başka bir işletim sistemi altında oluşturulan bir belgeyi okuma girişimi, genellikle ekranda anlaşılmaz bir dizi karakter görüntüler ve kodlamalı oyunlar başlar. Bunu hızlı bir şekilde yapmak her zaman mümkün değildir ve bazen gerekli belge altı ay içinde, hatta daha sonra açılabilir. Bilgi alışverişinde bulunan kişiler sıklıkla kendileri için dönüşüm tabloları oluştururlar. Ve onlar üzerinde çalışmak ortaya çıkarır ilginç detay: onları iki yönde oluşturmanız gerekir: “benimkinden sizinkine” ve tam tersi. Makine, hesaplamaların banal bir tersini yapamaz, çünkü kaynak sağ sütundadır ve sonuç soldadır, ancak tersi değildir. Belgede herhangi bir özel karakter kullanma ihtiyacı varsa, önce bunlar eklenmeli ve ardından ortağa bu karakterlerin "çılgın" hale gelmemesi için ne yapması gerektiğini açıklamalıdır. Ve unutmayalım ki, her kodlama için kendi yazı tiplerimizi geliştirmemiz veya uygulamamız gerekiyordu, bu da işletim sisteminde çok sayıda kopya oluşturulmasına yol açtı.

Ayrıca yazı tiplerinin sayfasında küçük işaretli 10 adet aynı Times New Roman göreceğinizi hayal edin: UTF-8, UTF-16, ANSI, UCS-2 için. Şimdi, evrensel bir standardın geliştirilmesinin acil bir ihtiyaç olduğunu anlıyor musunuz?

"Yaratıcı Babalar"

Unicode'un kökenleri 1987'de Xerox'tan Joe Becker ile Apple'dan Lee Collins ve Mark Davis'in evrensel bir karakter setinin pratik yaratılması konusunda araştırma yapmaya başladıkları zamana kadar götürülebilir. Ağustos 1988'de Joe Becker, 16 bitlik uluslararası çok dilli bir kodlama sistemi için bir taslak teklif yayınladı.

Bir kaç ay sonra çalışma Grubu Unicode, RLG'den Ken Whistler ve Mike Kernegan, Sun Microsystems'den Glenn Wright ve diğer birkaç kişiyi kapsayacak şekilde genişletildi ve tek bir kodlama standardı üzerindeki ön çalışmaları tamamladı.

Genel açıklama

Unicode, bir karakter kavramına dayanır. Bu tanım, belirli bir yazı türünde var olan ve grafikler (“portreleri”) aracılığıyla gerçekleştirilen soyut bir olguyu ifade eder. Her karakter "Unicode"da standardın belirli bir bloğuna ait benzersiz bir kodla belirtilir. Örneğin, B grafiği hem İngilizce hem de Rusça alfabede bulunur, ancak Unicode'da 2 farklı karaktere sahiptir. Onlara bir dönüşüm uygulanır, yani her biri bir veritabanı anahtarı, bir dizi özellik ve tam ad ile tanımlanır.

Unicode'un Faydaları

Diğer çağdaşlardan, Unicode kodlaması, karakterleri "şifrelemek" için çok sayıda karakter kaynağı ile ayırt edildi. Gerçek şu ki, öncekilerin 8 biti vardı, yani 28 karakteri destekliyorlardı, ancak yeni gelişme zaten 216 karaktere sahipti, bu da ileriye doğru dev bir adımdı. Bu, neredeyse tüm mevcut ve yaygın alfabelerin kodlanmasını mümkün kıldı.

"Unicode" un ortaya çıkmasıyla, dönüşüm tablolarını kullanmaya gerek yoktur: nasıl tek standart o basitçe onların ihtiyaçlarını reddetti. Aynı şekilde, "crakozyabry" unutulmaya yüz tuttu - tek bir standart onları imkansız hale getirdi ve aynı zamanda çift yazı tipleri oluşturma ihtiyacını ortadan kaldırdı.

Unicode'un Geliştirilmesi

Tabii ki ilerleme durmuyor ve ilk sunumun üzerinden 25 yıl geçti. Ancak Unicode kodlaması dünyadaki yerini inatla koruyor. Birçok yönden, bu, tescilli (ücretli) ve açık kaynaklı yazılım geliştiricileri tarafından tanınması, kolayca uygulanması ve yayılması nedeniyle mümkün oldu.

Aynı zamanda, bugün aynı Unicode kodlamasının çeyrek asır önce bizim için mevcut olduğunu varsaymamak gerekir. Şu anda, sürümü 5.xx olarak değişti ve kodlanmış karakter sayısı 231'e yükseldi. Daha büyük bir karakter kaynağı kullanma yeteneği, Unicode-16 desteğini sürdürmek için terk edildi (bir kodlamanın olduğu yerde bir kodlama). maksimum sayı 216 ile sınırlıydı). Başlangıcından bu yana ve 2.0.0 sürümüne kadar "Unicode Standard", içerdiği karakter sayısını neredeyse 2 kat artırdı. Fırsatların büyümesi sonraki yıllarda da devam etti. 4.0.0 sürümü ile zaten standartın kendisini arttırma ihtiyacı vardı, bu da yapıldı. Sonuç olarak, "Unicode" bugün bildiğimiz formu aldı.

Unicode'da başka neler var?

Büyük, sürekli yenilenen karakter sayısına ek olarak, bir tane daha kullanışlı özelliği var. Bu sözde normalleşmedir. Tüm belgeyi karakter karakter kaydırmak ve arama tablosundaki ilgili simgeleri değiştirmek yerine, mevcut normalleştirme algoritmalarından biri kullanılır. Ne hakkında konuşuyoruz?

Farklı alfabelerde benzer olabilecek aynı karakterin düzenli olarak kontrol edilmesiyle bilgisayar kaynaklarını boşa harcamak yerine özel bir algoritma kullanılır. Yerine koyma tablosunun ayrı bir sütununda benzer karakterleri çıkarmanıza ve bunlara zaten başvurmanıza ve tüm verileri tekrar tekrar kontrol etmemenize olanak tanır.

Bu tür dört algoritma geliştirilmiş ve uygulanmıştır. Her birinde dönüşüm, diğerlerinden farklı olan kesin olarak tanımlanmış bir ilkeye göre gerçekleşir, bu nedenle bunlardan herhangi birini en etkili olarak adlandırmak mümkün değildir. Her biri özel ihtiyaçlar için geliştirildi, uygulandı ve başarıyla kullanıldı.

Standardın dağılımı

25 yıllık tarihinde, Unicode muhtemelen dünyada en yaygın kullanılan kodlamadır. Programlar ve web sayfaları da bu standarda uyarlanmıştır. Unicode'un bugün İnternet kaynaklarının %60'ından fazlası tarafından kullanılması, uygulamanın genişliğinden söz edebilir.

Artık Unicode standardının ne zaman ortaya çıktığını biliyorsunuz. Nedir, siz de biliyorsunuz ve bir grup uzman Unicode Inc. tarafından yapılan buluşun tüm önemini takdir edebileceksiniz. 25 yıldan fazla bir süre önce.

Bu sitenin düzgün çalışması için JavaScript gerekir. Lütfen tarayıcı ayarlarınızda JavaScript'i etkinleştirin.

Unicode karakter tablosu

Hepsini Göster ↓
Aralık: 0000-001F: C0 Kontrol Karakterleri 0020-007F: Temel Latin 0080-009F: C1 Kontrol Karakterleri 00A0-00FF: Latin-1 Ek Karakterler 0100-017F: Latin Genişletilmiş-A 0180-024F: Latin Genişletilmiş-B 0250-02AF : Genişletilmiş Uluslararası Fonetik Alfabesi 02B0-02FF: Birleştirilemeyen genişletilmiş değiştirici karakterler 0300-036F: Birleştirilebilir aksan işaretleri 0370-03FF: Yunan ve Kıpti alfabeleri 0400-04FF: Kiril 0500-052F: Ek Kiril karakterleri 0530-058F: Ermeni alfabesi 0590 -05FF : İbranice 0600-06FF: Arapça 0700-074F: Süryanice 0750-077F: Ek Arapça 0780-07BF: Tana (Maldiv) 07C0-07FF: Nko 0800-083F: Samaritan 0840-085F: Mandaean 08A0-08FF: Genişletilmiş Arapça-A 0900 -097F: Devanagari 0980-09FF: Bengalce 0A00-0A7F: Gurmukhi 0A80-0AFF: Gujarati 0B00-0B7F: Ortaca 0B80-0BFF: Tamilce 0C00-0C7F: Telugu 0C80-0CFF: Kannada 0D00-0D7F: Malayalam 0D80-0DFF: Sinhalese 0E00-0E7F: Tay 0E80-0EFF: Lao 0F00-0FFF: Tibet 1000-109F: Myanmar 10A0-10FF: Gürcü 1100-11FF: Khangul (Korece yazısı) 1200 -137F: Etiyopya hecesi 1380-139F: Etiyopya ek karakterleri 13A0-13FF: Cherokee yazısı 1400-167F: Kanada hecesi 1680-169F: Ogham 16A0-16FF: Runik yazısı 1700-171F: Tagalog (Bayin) ) 1720-173F: Hanunoo 1740 -175F: Buhid 1760-177F: Tagbanwa 1780-17FF: Khmer yazısı 1800-18AF: Eski Moğol yazısı 18B0-18FF: Genişletilmiş Kanada hecesi 1900-194F: Limbu yazısı 1950-197F: Tay yazısı le 1980-19DF: Yeni Tai Ly alfabesi 19E0-19FF: Kmer karakterleri 1A00-1A1F: Bugi yazısı (Lontara) 1A20-1AAF: Eski Tai Ly yazısı (Tai Tham) 1B00-1B7F: Bali yazısı 1B80-1 BBF: Sunda alfabesi 1BC0-1BFF: Batak yazısı 1C00-1C4F: Lepcha yazısı (Rong) 1C50-1C7F: Ol Chiki yazısı 1CD0-1CFF: Vedik karakterler 1D00-1D7F: Fonetik uzantılar 1D80-1DBF: Ek fonetik uzantılar 1DC0-1DFF: Ek birleştirilebilir aksan 1E00-1EFF: Genişletilmiş Latince Ek 1F00-1FFF: Genişletilmiş Yunanca Karakter 2000-206F: Noktalama İşaretleri 2070-209F: Üst Simgeler ve Alt Simgeler 20A0-20CF: Para Birimi Simgeleri 20D0-20FF: Semboller için Birleştirilebilir Aksanlar 2100-214F: Harf benzeri karakterler 2150-218F: Sayısal formlar 2190-21FF: Oklar 2200-22FF: Matematiksel operatörler 2300-23FF: Çeşitli teknik karakterler 2400-243F: Kontrol kodu simgeleri 2440-245F: OCR karakterleri 2460-24FF: Gömülü harfler ve sayılar 2500-257F: Kenarlık sembolleri 2580-259F: Dolgu sembolleri 25A0-25FF: Geometrik şekiller 2600-26FF: Çeşitli semboller 27 00-27BF: Dingbats 27C0-27EF: Çeşitli matematik sembolleri-A 27F0-27FF: Ekstra oklar-A 2800-28FF: Braille 2900-297F: Ekstra oklar-B 2980-29FF: Çeşitli matematik sembolleri-B 2A00-2AFF: Ekstra Matematiksel Operatörler 2B00-2BFF: Çeşitli Semboller ve Oklar 2C00-2C5F: Glagolitik 1AB0-1AFF: Aksan Kombinasyonu (Uzantı A) 1CC0-1CCF: Genişletilmiş Sunda Karakter Kümesi A9E0-A9FF: Myanmar Komut Dosyası (Uzantı B) AAE0-AAFF: Karakterli MeiteiScript Set AB30-AB8F: Latin Genişletilmiş-E AB30-AB6F: Varang-Kshiti AB90-ABBF: Beria Zaghawa Komut Dosyası 2C60-2C7F: Latin Genişletilmiş-C 2C80-2CFF: Kıpti Komut Dosyası 2D00-2D2F: Ek Gürcü Komut Dosyası 2D30-2D7F: Tifinagh 2D80 -2DDF: Etiyopya Genişletilmiş Karakter Seti 2DE0-2DFF: Kiril Genişletilmiş-A 2E00-2E7F: Ek işaretler noktalama 2E80-2EFF: Ek CJK karakterleri 2F00-2FDF: Kangxi karakter tuşları 2FF0-2FFF: Karakter açıklama karakterleri 3000-303F: CJK karakterleri ve noktalama işaretleri 3040-309F: Hiragana 30A0-30FF: Katakana 3100-312F: Zhuyin (bopomofo) 3130- 318F: Hangul ile birleştirilmiş Chamo 3190-319F: Kambun'da kullanılan karakterler 31A0-31BF: Bopomofo genişletilmiş karakter seti 31C0-31EF: CJK özellikleri 31F0-31FF: Katakana fonetik uzantıları 3200-32FF: İç içe CJK harfleri ve ayları 3300- 33FF: CJK Uyumluluğu Marks 3400-4DBF: CJK Birleşik Karakterler (Uzantı A) 4DC0-4DFF: I Ching Heksagramları 4E00-9FFF: CJK Birleşik Karakterler A000-A48F: Heceler ve A490-A4CF: Radikaller ve A4D0-A4FF: Lisu Alfabesi A500 -A63F: Vai A640-A69F: Kiril Genişletilmiş-B A6A0-A6FF: Bamum Script A700-A71F: Ton Değiştirme Sembolleri A720-A7FF: Latin Genişletilmiş-D A800-A82F: Siloti Nagri A830-A83F: Hint Sayısal Sembolleri A840- A87F: Kare Pi Phagba Lama A880-A8DF: Saurashtra A8E0-A8FF: Devanagari Genişletilmiş Karakter A900-A92F: Kayah Li A930-A95F: Rejang A960-A97F: Hangul (A Uzantısı) A980-A9DF: Cava AA00-AA5F: Cham AA60 -AA7F (Uzantı A) AA80-AADF: Tai Viet yazısı AB00-AB2F: Etiyopya yazısı (A uzantısı) ABC0-ABFF: Meitei/Manipuri AC00-D7AF: Hangul heceleri D800-DB7F: DB80 vekil çiftlerinin üstü -DBFF: Özelin üst kısmı vekil çiftleri kullan DC00-DFFF: Vekil çiftlerin alt kısmı E000-F8FF: Özel kullanım alanı F900-FAFF: CJK uyumlu karakterler FB00-FB4F: Alfabetik temsil formları FB50-FDCF: Arapça harf-A temsil formları FDF0-FDFF: Arapça-A Temsil Formları FE00-FE0F: Stil Varyant Seçiciler FE10-FE1F: Dikey Formlar FE20-FE2F: Birleştirilebilir Yarım Karakterler FE30-FE4F: CJC Uyumluluk Formları FE50-FE6F: Küçük Boyutlu Varyantlar FE70-FE FF: Arapça Harf-B Formları FF00-FFEF: Yarım Genişlik ve Tam Genişlik Formları FFF0-FFFF: Özel Karakterler

  • Unicode nedir?

    tek kod(İngilizce) tek kod), dünyanın tüm dillerinden karakterler sağlamanıza izin veren evrensel bir karakter kodlama standardıdır.

    ASCII'den farklı olarak, bir karakter iki bayt olarak kodlanır ve 65 536 karakterler, karşı 256 .

    Bildiğiniz gibi, bir bayt bir tamsayıdır. sıfırönce 255 . Buna karşılık, bir bayt şunlardan oluşur: sekiz sayısal değerleri ikili biçimde depolayan bitler, burada geçerli bitin sonraki her birimi önceki bitin değerinin iki katıdır. Böylece, iki bayt, bir sayıyı depolayabilir sıfırönce 65 535 , kullanılmasını mümkün kılan 65 536 karakterler (sıfır + 65 535 , sıfır da bir sayıdır, hiçbir şey değildir).

    Unicode karakterler bölümlere ayrılmıştır. Öncelikle 128 karakterler tekrar tablosu ASCII.

    Karakterlerin görüntülenmesinden kodlama ailesi sorumludur. tek kod (Unicode Dönüşüm Biçimi - UTF). En ünlü ve yaygın olarak kullanılan kodlama, UTF-8.

  • Masa nasıl kullanılır?

    Semboller satır başına 16 parça halinde sunulmaktadır. Yukarıdan görebilirsiniz onaltılık sayı itibaren 0 önce 16 . Solda, onaltılık biçimde benzer sayılar 0 önce FFF.
    Soldaki sayı ile üstteki sayıyı birleştirerek karakter kodunu öğrenebilirsiniz. Örneğin: İngilizce mektup F hatta bulunan 004 , bir sütunda 6 : 004 + 6 = karakter kodu 0046 .

    Ancak, basitçe üzerine gelebilirsiniz belirli karakter karakter kodunu bulmak için tabloda. Veya kopyalamak için bir sembole veya formatlardan birinde kodunu tıklayın.

    Arama alanına arama anahtar sözcükleri girebilirsiniz, örneğin: oklar, güneş, kalp. Veya karakter kodunu herhangi bir biçimde belirtebilirsiniz, örneğin: 1123, 04BC, چ. Veya sembol kodunu bilmek istiyorsanız, sembolün kendisi.

    Şuna göre ara: anahtar kelimelerşu anda geliştirme aşamasındadır, bu nedenle sonuç vermeyebilir. Ancak birçok popüler sembol zaten bulunabilir.

İster inanın ister inanmayın, tarayıcıda yerleşik bir görüntü formatı vardır. Bu biçim, görüntüleri ihtiyaç duymadan önce indirmenize izin verir, görüntünün normal veya retina ekranları ve eklemenizi sağlar css görüntüleri. Tamam, bu tamamen doğru değil. Diğer her şey hala geçerli olmasına rağmen, bu bir resim formatı değildir. Bunu kullanarak, yüklenmesi zaman almayan ve aşağıdakilerle şekillendirilebilen, çözünürlükten bağımsız simgeler oluşturabilirsiniz. CSS kullanarak.

Unicode nedir?

Unicode, farklı dillerdeki harfleri ve noktalama işaretlerini aynı sayfada doğru şekilde görüntüleme yeteneğidir. İnanılmaz derecede kullanışlıdır: Kullanıcılar tüm dünyada sitenizle çalışabilecek ve ne istediğinizi gösterecektir - aksanlı Fransızca veya Kanji olabilir.

Unicode gelişmeye devam ediyor: şimdi mevcut sürüm 8.0, 120 binden fazla karaktere sahip (2014 başlarında yayınlanan orijinal makalede, sürüm 6.3 ve 110 bin karakterdi).

Unicode'da harflere ve sayılara ek olarak başka karakterler ve simgeler de vardır. İÇİNDE en son sürümler Bunlar, iOS messenger'da görebileceğiniz emojileri içeriyor.

HTML sayfaları bir dizi Unicode karakterden oluşturulur ve ağ üzerinden gönderildiğinde baytlara dönüştürülür. Herhangi bir dilin her harfi ve her sembolü kendi benzersiz koduna sahiptir ve dosya kaydedildiğinde kodlanır.

UTF-8 kodlama sistemini kullanırken, Unicode karakterlerini doğrudan metne ekleyebilirsiniz, ancak sayısal bir sembolik bağlantı belirterek Unicode karakterleri de metne ekleyebilirsiniz. Örneğin, bu bir kalp sembolüdür ve bu sembolü sadece işaretlemeye kod ekleyerek görüntüleyebilirsiniz.

Bu sayısal referans, hem ondalık hem de onaltılık biçimde belirtilebilir. Ondalık biçim, başına x harfinin eklenmesini gerektirir, giriş, önceki seçenekle aynı kalbi ( ) verecektir. (2665, 9829'un onaltılık versiyonudur).

CSS ile bir Unicode karakteri ekliyorsanız, yalnızca onaltılık değerler kullanabilirsiniz.

En sık kullanılan Unicode karakterlerinden bazıları, ve işareti (& - &) gibi sayısal kodlar yerine daha akılda kalıcı metin adlarına veya kısaltmalara sahiptir. Böyle karakterler denir HTML'de anımsatıcılar, tam listesi Wikipedia'da.

Neden Unicode kullanmalısınız?

Güzel soru, işte bazı nedenler:

  1. Farklı dillerden doğru karakterleri kullanmak.
  2. Simgeleri değiştirmek için.
  3. @font-face ile bağlanan simgeleri değiştirmek için.
  4. CSS sınıflarını ayarlamak için

Doğru karakterler

Sebeplerden ilki herhangi bir ek işlem gerektirmez. HTML, UTF-8 formatında kaydedilir ve kodlaması ağ üzerinden UTF-8 olarak iletilirse, her şey olması gerektiği gibi çalışmalıdır.

Zorunlu. Ne yazık ki, tüm tarayıcılar ve cihazlar tüm Unicode karakterlerini aynı şekilde desteklemez (daha doğrusu, tüm yazı tipleri tam karakter kümesini desteklemez). Örneğin, yeni eklenen emoji karakterleri her yerde desteklenmemektedir.

HTML5'te UTF-8 desteği için (sunucu ayarlarına erişiminiz yoksa, şunu da eklemelisiniz: ). Eski doküman türü kullanır ( ).

Simgeler

Unicode kullanmanın ikinci nedeni, Büyük bir sayı simgeler olarak kullanılabilecek kullanışlı semboller. Örneğin, ≡ ve .

Onların bariz avantajı, herhangi bir şeye ihtiyacınız olmamasıdır. ek dokümanlar onları sayfaya eklemek, sitenizin daha hızlı olacağı anlamına gelir. Ayrıca renklerini değiştirebilir veya CSS ile gölge ekleyebilirsiniz. Ve geçişler (css geçişi) ekleyerek, simgenin üzerine geldiğinizde herhangi bir ek görüntü olmadan simgenin rengini sorunsuz bir şekilde değiştirebilirsiniz.

Sayfama yıldızlı bir derecelendirme göstergesi eklemek istediğimi varsayalım. Bunu şöyle yapabilirim:

★ ★ ★ ☆ ☆

Aşağıdaki sonucu alacaksınız:

Ancak şanssızsanız, şöyle bir şey göreceksiniz:

BlackBerry 9000'de aynı puan

Bu, kullanılan karakterler tarayıcının veya cihazın yazı tipinde değilse (neyse ki, bu yıldızlar mükemmel bir şekilde desteklenir ve eski böğürtlen telefonları buradaki tek istisnadır).

Unicode karakteri yoksa, boş bir kareden (□) soru işaretli bir elmasa (�) kadar değişen karakterlerle değiştirilebilir.

Ancak tasarımınızda kullanıma uygun olabilecek bir Unicode karakterini nasıl bulacaksınız? Mevcut karakterlere bakarak Unicodinator gibi bir sitede arayabilirsiniz, ancak ayrıca en iyi yol. - bu harika site, aradığınız simgeyi çizmenize olanak tanır ve ardından size benzer Unicode karakterlerinin bir listesini sunar.

Unicode'u @font-face Simgeleriyle Kullanma

@font-face aracılığıyla harici bir yazı tipiyle bağlantılı simgeler kullanıyorsanız, Unicode karakterleri yedek olarak kullanılabilir. Bu şekilde, @font-face'in desteklenmediği cihazlarda veya tarayıcılarda benzer bir Unicode karakteri gösterebilirsiniz:

Solda Chrome'daki Font Awesome simgeleri ve sağda Opera Mini'deki Unicode değiştirme karakterleri bulunur.

Birçok @font-face eşleştirme aracı, özel kullanım alanındaki Unicode karakter aralığını kullanır. Bu yaklaşımdaki sorun, @font-face desteklenmiyorsa, karakter kodlarının kullanıcıya hiçbir anlamı olmadan iletilmesidir.

@font-face'de simge kümeleri oluşturmak için harikadır ve simgenin temeli olarak uygun bir Unicode karakteri seçmenize olanak tanır.

Ancak dikkatli olun - bazı tarayıcılar ve cihazlar, @font-face ile kullanıldığında tek Unicode karakterlerini sevmez. Unify ile Unicode karakter desteğini kontrol etmek mantıklıdır - bu uygulama, @font-face simge setinde bir karakter kullanmanın ne kadar güvenli olduğunu belirlemenize yardımcı olacaktır.

Unicode karakterler için destek

Unicode karakterlerini yedek olarak kullanmanın temel sorunu, ekran okuyucularda zayıf destektir (yine bununla ilgili bazı bilgiler Unify'da bulunabilir), bu nedenle kullandığınız karakterleri dikkatli bir şekilde seçmeniz önemlidir.

Simgeniz, ekran okuyucu tarafından okunabilen bir metin etiketinin yanında yalnızca dekoratif bir öğeyse, çok fazla endişelenmenize gerek yok. Ancak simge kendi başınaysa, ekran okuyucu kullanıcılarına yardımcı olmak için gizli bir metin etiketi eklemeye değer. Bir Unicode karakteri bir ekran okuyucu tarafından okunsa bile, amaçlanan amacından çok farklı olma ihtimali vardır. Örneğin, bir hamburger simgesi olarak ≡ (≡) iOS'ta VoiceOver tarafından “özdeş” olarak okunur.

CSS sınıf adlarında Unicode

Unicode'un sınıf adlarında ve stil sayfalarında kullanılabileceği 2007'den beri biliniyor. O zaman Jonathan Snook, yuvarlatılmış köşeleri düzenlerken yardımcı sınıflarda Unicode karakterlerinin kullanımı hakkında yazdı. Bu fikir pek yaygınlaşmadı, ancak Unicode'u sınıf adlarında (özel karakterler veya Kiril) kullanma olasılığını bilmeye değer.

Yazı tipi seçimi

Çok az yazı tipi tam Unicode karakter setini destekler, bu nedenle bir yazı tipi seçerken istediğiniz karakterleri kontrol ettiğinizden emin olun.

Segoe UI Symbol veya Arial Unicode MS'de birçok simge. Bu yazı tipleri hem PC'de hem de Mac'te mevcuttur; Lucida Grande ayrıca makul miktarda Unicode karaktere sahiptir. Bu yazı tiplerini yüklemiş olan kullanıcılar için maksimum Unicode karakter sayısını zorlamak için bu yazı tiplerini yazı tipi ailesi bildirimine ekleyebilirsiniz.

Unicode Desteğini Belirleme

Belirli bir Unicode karakterinin varlığını kontrol edebilmek çok uygun olacaktır, ancak bunu yapmanın garantili bir yolu yoktur.

Unicode karakterler desteklendiğinde etkili olabilir. Örneğin, bir e-postanın konu satırındaki bir emoji, onu diğerlerinden farklı kılar. posta kutusu.

Çözüm

Bu makale yalnızca Unicode'un temellerini kapsar. Umarım faydalı bulursunuz ve Unicode'u daha iyi anlamanıza ve etkili bir şekilde kullanmanıza yardımcı olursunuz.

Bağlantı Listesi

  • (Unicode tabanlı @font-face simge seti oluşturucu)
  • Shape Catcher (Unicode karakter tanıma aracı)
  • Unicodinator (unicode karakter tablosu)
  • Birleştir (Tarayıcılarda Unicode karakter desteğini kontrol edin)
  • Unitools (Unicode ile çalışmak için araçlar koleksiyonu)