架构师_程序员_码农网

K Parolayı al
Kayıt Olun

QQ登录

Başlamak için sadece bir adım

Arama
Görüntüleme:1896|Yanıt: 1
打印 上一主题 下一主题

ASCII, ISO8859-1, Unicode, GBK ve UTF-8 arasındaki farklar

[kopya link]
D 跳转到指定楼层
sahibi
发表于 2022-12-11 14:01:58|只看该作者回帖奖励|TersGözat|Okuma Modu
Neden kodlamaya ihtiyacımız var?

Bilgisayardaki en küçük depolama birimi bir bayttır (bayt), bir bayt karakter sayısını temsil edebilir ve sınırlıdır, 1 bayt = 8 bit, bir bayt yalnızca 255 karaktere kadar temsil edebilir ve dünya dilleri ve daha fazlası, çeşitli farklı karakterler vardır, bir baytı temsil etmek için kullanılamaz, bu nedenle karakteri temsil etmek için java char kodlama problemini çözmektir, bir char iki bayt olarak hesaplanır, bu nedenle char'dan bayt arasındaki en küçük birime kodlanmalıdır ve kod çözme için tam tersi, bir char iki bayt olarak hesaplanır, bu nedenle char'dan bayt arasındaki en küçük birime kodlanmalıdır. char iki bayta karşılık gelir, bu nedenle char'dan bayt arasındaki en küçük birime kadar kodlanmalı ve kod çözme için bunun tersi yapılmalıdır.

Aslında, kodlama ve kod çözme çeviri sürecinin tamamlanmasıdır ("çeviri" anlaşılması kolaydır), çeşitli kodlama bir sözlüktür.

1, ASCII kodu

Tümü American Standard Code for Information Interchange olarak bilinen, dünyanın en yaygın tek baytlık kodlama sistemi olan American Standard Code for Information Interchange, esas olarak modern İngilizce ve diğer Batı Avrupa dillerini görüntülemek için kullanılır.

7-bit gösterimli ASCII kodu, yalnızca 128 karakteri temsil edebilir, enter, backspace, delete, vb. gibi 0 ila 31 kontrol karakteri; klavye aracılığıyla girilebilen ve karakterleri görüntüleyebilen 32 ila 126 baskı karakteri, klavye aracılığıyla girilebilen ve görüntülenebilen 0 ila 9 karakter için 48 ila 57 karakter.

Bunlar arasında, 0 ila 9 on Arap rakamı için 48 ila 57, alfabenin 26 büyük harfi için 65 ila 90, alfabenin 26 küçük harfi için 97 ila 122 ve geri kalanı bazı noktalama işaretleri, aritmetik semboller vb. için ASCII standart tablosuna başvurabilirsiniz.

2、ISO-8859-1

Bu kod ASCII kodunun genişletilmesine dayanmaktadır, ancak hala tek baytlık bir koddur ve toplamda sadece 256 karakterden oluşmaktadır.

ASCII yalnızca 128 karakteri temsil edebildiğinden, ekran tam olarak ifade edilemez, bu nedenle ISO-8859-1, ASCII kodunun üzerine ASCII kodunu genişletir ve metin sembollerine karşılık gelen Batı Avrupa dillerini, Yunanca, Tayca, Arapça, İbranice'yi ekler, ASCII koduyla aşağı doğru uyumludur.

3、GB2312

GB2312'nin tam adı, çift baytlık bir kodlama olan "Bilgi Teknolojisi Çince Kodlanmış Karakter Seti "dir ve kodlama aralığı A1-F7'dir; A1-A9, toplam 682 sembol içeren sembol alanıdır ve B0-F7, 6.763 Çince karakter içeren Çince karakter alanıdır.

Tam adı Bilgi Değişimi için Çince Karakter Kodu Karakter Seti olan GB2312, 1980 yılında Çin tarafından piyasaya sürülmüştür ve esas olarak bilgisayar sistemlerinde Çince karakter işleme için kullanılmaktadır. 6.763 Çince karakter ve 682 sembol içermektedir.

GB2312, Çince karakterlerin kullanımının çoğunu kapsar, ancak eski Çince gibi özel nadir karakterlerle başa çıkamaz, bu nedenle GBK ve GB18030 gibi kodlar daha sonra ortaya çıktı.

4、GBK

GBK'nın tam adı, GB2312'yi genişletmek için ortaya çıkan "Çince Karakter Dahili Kod Uzatma Spesifikasyonu "dur, kodlama aralığı 8140-FEFE'dir (XX7F'yi kaldırın), toplam 23940 kod noktası, 21003 Çince karakteri temsil edebilir ve kodlaması GB2312 ile uyumludur!

Çin Dahili Kod Spesifikasyonu olarak bilinen GBK, 1995 yılında geliştirilmiştir. Temel olarak GB2312'ye daha fazla Çince karakter ekleyerek genişletir ve toplamda 21003 Çince karakter içerir.

GBK, GB2312 ile geriye dönük uyumludur, yani GB2312'de kodlanan Çince karakterler GBK'da herhangi bir çöp olmadan normal olarak çözülebilir, ancak GBK'da kodlanan Çince karakterler GB2312'de herhangi bir çöp olmadan çözülebilir.

5、GB18030

Çin Karakter Kodu Genişletme Spesifikasyonu olarak bilinen GB18030, 2000 yılında yayımlanan ve 2001 yılında yürürlüğe giren, 70.000'den fazla Çince karakter dahil olmak üzere Çin'in etnik azınlıklarının dil karakterlerinin çoğunu içeren en son dahili kod karakter setidir.

Temel olarak GB2312 ve GBK ile geriye dönük uyumlu olan tek bayt, çift bayt ve dört bayt karakter kodlamasını benimser. Çin'de zorunlu bir standart olmasına rağmen, gerçek üretimde nadiren kullanılır ve en çok kullanılanlar GBK ve GB2312'dir.

6. UNICODE

Kendi dillerinin bilgisayarda düzgün bir şekilde görüntülenebilmesi için, her ülkenin ve bölgenin kendi kodu vardır, bu nedenle birbirlerinin kodunu bilmeyen daha fazla kod, bu kez ISO organizasyonu UNICODE kodlaması adı verilen yeni bir kod ortaya koydu, böylece küresel kültür, karakterler, semboller desteklenebilir. Bilgisayar kapasitesinin geliştirilmesinde UNICODE artık bir sorun değildir, bu nedenle sabit iki bayt tasarımı, tüm karakterler 16 bit ile temsil edilir ve tüm karakterler 16 bit ile temsil edilir. Tüm karakterler, daha önce sadece 8 bit olarak hesaplanan İngilizce karakterler de dahil olmak üzere 16 bit ile temsil edilir, bu nedenle alan israfına neden olur, UNICODE uzun süredir popüler değildir.

7、UTF-16

UTF-16'nın ortaya çıkışı, ISO'nun yeni bir süper dil sözlüğü oluşturmak istemesidir, dünyadaki tüm diller bu sözlük aracılığıyla birbirine çevrilebilir, bu sözlüğün ne kadar karmaşık ve büyük olduğu hayal edilebilir. UTF-16, Unicode dönüşüm formatını temsil etmek için iki bayt kullanır (iki bayt 16 bittir, bu nedenle UTF-16 için gereklidir), sabit uzunlukta bir gösterimin kullanılması yöntemiyle, yani herhangi bir karakter iki bayt ile temsil edilebilir. Karakterleri bu şekilde temsil etmek çok uygundur. Bununla birlikte, bir kusur da vardır, yani karakterin büyük bir kısmı bir bayt ile ifade edilebilir, UTF-16 ancak iki bayt ile, bazı depolama alanı israfı. Bu yüzden başka bir kodlama yöntemi ortaya çıktı, yani UTF-8.

UTF-16, UNICODE'un özel bir uygulamasıdır, 16 yani 16 bit, bunun nedeni olan UTF-16, bilgisayardaki UNICODE karakter depolamasını tanımlar, UTF-16 ayrıca herhangi bir karakteri temsil etmek için iki bayt kullanır, bu da karakter dizesinin çalışmasını çok verimli hale getirir, bu da java UTF-16 bellekte depolanan karakterin biçimi önemlidir! Bu, java'nın karakterleri bellekte saklamak için format olarak UTF-16'yı kullanmasının nedenidir.

UTF-16 disk ve bellek arasında kullanım için uygundur, karakterlerin ve baytların birbirine dönüştürülmesi daha basit ve daha verimli olacaktır, ancak ağ üzerinden iletim için uygun değildir, çünkü ağ iletimi bayt akışına zarar verebilir.

8. UTF-8

UTF-8 değişken uzunluk teknolojisini benimser, her kodlama bölgesi farklı bir karakter kodu uzunluğuna sahiptir, farklı karakter türleri 1-6 bayttan oluşabilir.

UTF-8'in kodlama kuralları aşağıdaki gibidir:

1) Eğer 1 byte ve en yüksek bit 0 ise, bu 1 ASCII karakteri olduğu anlamına gelir. Tüm ASCII kodlarının zaten UTF-8 olduğu görülebilir.

2) Eğer 1 bayt ise, 11 ile başlayan ardışık 1'lerin sayısı karakterdeki bayt sayısını ifade eder, örneğin: 110xxxxx çift baytlık UTF-8 karakterinin ilk baytı olduğu anlamına gelir.

3) Eğer 10 ile başlayan 1 byte ise, bu ilk byte olmadığı anlamına gelir, o zaman mevcut karakterin ilk byte'ını almak için ileriye doğru arama yapmanız gerekir.

UTF-16 çok verimli olmasına rağmen, aynı zamanda UNICODE ile ilgili en büyük kötü şey, tüm tek baytlık karakterlerin iki baytı hesaba katması gerektiğinden, depolama alanı iki kat büyütülür, bu da açıkça kaynakları tüketir, İnternetin hızlı gelişiminin mevcut durumunu karşılamaz. UNICODE'un değişken uzunluklu bir karakter kodlama uygulaması olan UTF-8, UNICODE karakterlerini kodlamak için 1 ila 6 sabit uzunluklu bayt kullanabilir.

UTF-8, ASCII karakterleri için tek baytlık depolama kullanır ve tek bir karaktere verilen hasar onu takip eden karakterleri etkilemez, bu nedenle UTF-8 internette geleneksel kullanım için çok uygundur ve günümüzde en yaygın kullanılan kodlamalardan biridir.

UTF-8, Çince karakterleri temsil etmede GBK'dan daha verimli ve UTF-16'dan daha az verimlidir, bu nedenle GBK'nın yanı sıra en ideal kodlama yöntemidir.




Önceki İçerik:Linux bellek buff/cache işgali çok büyük sorunu
Sonraki: Varlık dosyası "project.assets.json" bulunamıyor. Geri yüklemek için NuGet paketini çalıştırın ...
NET, sadece uygulama sürecinde yayınlanmış, teknik zorluklarla karşılaşmış, başkalarını yanıltmayın.
johnyoung johnyoung
发表于 2022-12-30 14:43:17|只看该作者
Anladım, utf-8 kullan
Kod çiftçi ağı, sadece uygulama sürecinde yayınlandı, teknik zorluklarla karşılaştı, başkalarını yanıltmayın.
Geri gönderi yapabilmeniz için giriş yapmanız gerekmektedir Giriş Yap | Kayıt Ol

İntegral kurallarının bu versiyonu


YASAL UYARI: Code Farmer tarafından yayınlanan tüm yazılım, programlama materyalleri veya makaleler yalnızca öğrenme ve araştırma amacıyla kullanılmak üzere sınırlandırılmıştır; yukarıdaki içerikler ticari veya yasadışı amaçlarla kullanılamaz, aksi takdirde tüm sonuçlar kullanıcıların kendileri tarafından karşılanacaktır. Bu site bilgileri ağdan alınmıştır, telif hakkı anlaşmazlığının bu site ile hiçbir ilgisi yoktur. Yukarıdaki içeriği indirdikten sonraki 24 saat içinde bilgisayarınızdan tamamen kaldırmalısınız. Programı beğendiyseniz, lütfen orijinal yazılımı destekleyin, kaydı satın alın ve daha iyi orijinal hizmet alın. Herhangi bir ihlal varsa, bununla ilgilenmek için lütfen bizimle e-posta yoluyla iletişime geçin.

Posta To:help@itsvse.com

QQ| ( 鲁ICP备14021824号-2)|Sitemap

GMT+8, 2024-9-19 05:23

Hızlı YanıtBaşadön Listeye dön