Neden Base64 kullanıyoruz?


275

Wikipedia diyor

Base64 kodlama şemaları, metinsel verilerle başa çıkmak üzere tasarlanmış ortamlar üzerinde depolanması ve aktarılması gereken ikili verilerin kodlanması gerektiğinde yaygın olarak kullanılır. Bu, verilerin taşıma sırasında herhangi bir değişiklik yapılmadan bozulmadan kalmasını sağlamak içindir.

Ancak bu, verilerin her zaman ikili olarak depolanması / iletilmesi değildir, çünkü makinelerimizin sahip olduğu bellek ikiliyi depolar ve sadece nasıl yorumladığınıza bağlıdır? Yani, biraz deseni kodlamak ister 010011010110000101101110olarak ManASCII veya TWFuBase64, sonunda aynı bit deseni saklamak için gidiyoruz.

Nihai kodlama sıfırlar ve birimlerdeyse ve her makine ve medya bunlarla başa çıkabilirse, verilerin ASCII veya Base64 olarak temsil edilmesi nasıl bir şeydir?

"Metin verileriyle başa çıkmak için tasarlanmış medya" ne anlama geliyor? Onlar ikili ile başa çıkabilirler => herhangi bir şey ile başa çıkabilirler.


Herkese teşekkürler, sanırım şimdi anlıyorum.

Verileri gönderdiğimizde, verilerin olmasını istediğimiz formatta yorumlanacağından emin olamayız. Bu nedenle, her iki tarafın da anladığı bir biçimde (Base64 gibi) kodlanmış verileri göndeririz. Bu şekilde, gönderen ve alıcı aynı şeyleri farklı şekilde yorumlasa da, kodlanmış format üzerinde anlaştıklarından veriler yanlış yorumlanmayacaktır.

Gönderen Mark Byers örnek

Göndermek istersem

Hello
world!

Bir yolu ASCII gibi göndermek

72 101 108 108 111 10 119 111 114 108 100 33

Ancak bayt 10, diğer uçta bir yeni satır olarak doğru olarak yorumlanmayabilir. Yani, ASCII'nin bir alt kümesini bu şekilde kodlamak için kullanıyoruz

83 71 86 115 98 71 56 115 67 110 100 118 99 109 120 107 73 61 61

aynı miktarda bilgi için aktarılan daha fazla veri pahasına, alıcı karakter setinin geri kalanı için farklı yorumlara sahip olsa bile, alıcının verileri istenen şekilde deşifre edebilmesini sağlar.


6
Geçmiş arka plan: E-posta sunucuları eskiden 7 bit ASCII idi. Birçoğu yüksek biti 0 olarak ayarlayacaktır, bu yüzden sadece 7 bitlik değerler göndermelisiniz. Bkz. En.wikipedia.org/wiki/Email#Content_encoding
Harold L

53
Base64 kullanıyoruz çünkü Perl'den daha okunabilir
Martin

2
@ Martin, şaka yapıyorsun. Perl'in okunması zordur, ancak base64 okunamaz.
Peter Long

1
@Lazer Görüntünüz eksik
Mick

2
@Lazer, "Ancak bayt 10, diğer uçta yeni satır olarak doğru yorumlanamayabilir." neden? iki taraf ASCII üzerinde anlaştılar ve doğru şekilde yorumlamaları gerekiyor!
ProgramCpp

Yanıtlar:


298

İlk hatanız ASCII kodlaması ile Base64 kodlamasının birbirinin yerine kullanılabileceğini düşünmektir. Onlar değil. Farklı amaçlar için kullanılırlar.

  • ASCII'de metin kodladığınızda, bir metin dizesiyle başlar ve bunu bir bayt dizisine dönüştürürsünüz.
  • Base64'te veri kodladığınızda, bir bayt dizisiyle başlar ve bir metin dizesine dönüştürürsünüz.

Base64'in neden gerekli olduğunu anlamak için biraz bilgi işlem geçmişine ihtiyacımız var.


Bilgisayarlar ikili - 0s ve 1s - iletişim kurar, ancak insanlar genellikle metin veya resim gibi daha zengin form verileriyle iletişim kurmak ister. Bu verileri bilgisayarlar arasında aktarmak için önce 0'lara ve 1'lere kodlanması, gönderilmesi, sonra tekrar kodunun çözülmesi gerekir. Metni örnek olarak almak için - bu kodlamayı gerçekleştirmenin birçok farklı yolu vardır. Hepimiz tek bir kodlama üzerinde anlaşabilirsek çok daha kolay olurdu, ama ne yazık ki durum böyle değil.

Başlangıçta ASCII karakter başına 7 bitlik bir standart haline gelene kadar karakter başına farklı sayıda bit kullanan birçok farklı kodlama (örn. Baudot kodu ) oluşturuldu . Bununla birlikte, çoğu bilgisayar ikili verileri her biri 8 bitlik baytlarda depolar, böylece ASCII bu tür verileri aktarmak için uygun değildir. Bazı sistemler en önemli parçayı bile silecektir. Ayrıca, sistemler arasındaki satır sonu kodlamalarındaki fark, ASCII karakteri 10 ve 13'ün de bazen değiştirildiği anlamına gelir.

Bu sorunları çözmek için Base64 kodlaması tanıtıldı. Bu, aribtrary baytlarını bozulmadan gönderilmesinin güvenli olduğu bilinen baytlara kodlamanıza olanak tanır (ASCII alfasayısal karakterler ve birkaç sembol). Dezavantajı, Base64 kullanarak iletinin kodlanmasının uzunluğunu arttırmasıdır - her 3 baytlık veri 4 ASCII karakterine kodlanır.

Metni güvenilir bir şekilde göndermek için önce seçtiğiniz bir metin kodlamasını (örneğin UTF-8) kullanarak baytlara kodlayabilir ve daha sonra Base64, elde edilen ikili verileri ASCII olarak kodlanmış gönderilmesi güvenli bir metin dizesine kodlayabilir. Alıcı, orijinal mesajı kurtarmak için bu işlemi tersine çevirmek zorunda kalacaktır. Bu, elbette, alıcının hangi kodlamaların kullanıldığını bilmesini gerektirir ve bu bilgilerin genellikle ayrı olarak gönderilmesi gerekir.

Tarihsel olarak, e-posta sunucusunun satır sonlarını değiştirebileceği e-posta mesajlarındaki ikili verileri kodlamak için kullanılmıştır. Daha modern bir örnek, görüntü verilerini doğrudan HTML kaynak koduna gömmek için Base64 kodlamasının kullanılmasıdır . Burada '<' ve '>' gibi karakterlerin etiket olarak yorumlanmasını önlemek için verileri kodlamak gerekir.


İşte çalışan bir örnek:

İki satırlı kısa mesaj göndermek istiyorum:

Merhaba
dünya!

ASCII (veya UTF-8) olarak gönderirsem şu şekilde görünecektir:

72 101 108 108 111 10 119 111 114 108 100 33

Bayt 10 bazı sistemlerde bozuk olduğundan 64 bu baytı Base64 dizesi olarak kodlayabiliriz:

SGVsbG8sCndvcmxkIQ ==

Hangi ASCII kullanılarak kodlandığında şöyle görünür:

83 71 86 115 98 71 56 115 67 110 100 118 99 109 120 107 73 61 61

Buradaki tüm baytlar güvenli bayt olarak bilinir, bu nedenle herhangi bir sistemin bu mesajı bozma olasılığı çok azdır. Orijinal mesajım yerine bunu gönderebilir ve alıcının orijinal mesajı kurtarmak için işlemi tersine çevirmesine izin verebilirim.


4
"çoğu modern iletişim protokolü verileri bozmaz" - örneğin e-posta, iletiyi bir posta kutusuna kaydederken "\ nFrom" karakter dizesini "\ n> Kimden" ile değiştiren bir dağıtım aracısı olsa da. Veya HTTP üstbilgileri, verilerdeki yeni satırlardan kaçmak için tersinir bir yol bulunmayan yeni satır sonlandırılır (satır devam etme boşlukla sınırlıdır), bu nedenle bunlara yalnızca rastgele ASCII'yi dökemezsiniz. base64 sadece 7 bitlik kasadan daha iyidir , alfa-sayısal ve - = + / güvenli.
Steve Jessop

1
"Dezavantajı, Base64 kullanarak iletinin kodlanmasının uzunluğunu arttırmasıdır - her 3 baytlık veri 4 bayta kodlanır." 4 bayta nasıl yükselir? Hala sadece 3 * 8 = 24 bit olmayacak mı?
Lazer

4
@Lazer: hayır. Kendi örneğinize bakın - "Man", "TWFu" olarak kodlanan base-64'tür. 3 bayt -> 4 bayt. Çünkü girdinin 2 ^ 8 = 256 olası bayttan herhangi biri olmasına izin verilirken, çıktı sadece 2 ^ 6 = 64 tanesini kullanır (ve =, verilerin uzunluğunu belirtmeye yardımcı olmak için). Çıktının girişte dört "bit" olması durumunda, çıktının girdi olsa bile "heyecan verici" karakterler içermesini önlemek için "boşa harcanır".
Steve Jessop

2
"Base64'te veri kodladığınızda, bir bayt dizisiyle başlayıp bir metin dizesine dönüştürdüğünüzde" "" Base64'te veri kodladığınızda, bir bayt dizisiyle başlayıp bir msgstr "sadece ASCII değerlerinden oluşan bayt dizisi". Yalnızca ASCII karakterlerinden oluşan bir bayt dizisi, SMTP için gerekli olan şeydir, bu nedenle Base64 (ve alıntı yapılabilir) içerik aktarımı kodlamaları olarak kullanılır. Mükemmel görünüm!
ALEXintlsos

1
Oy verirdim, ama 64 oyu var. Üzgünüm, bu mükemmel.
Jessé Catrinck

61

İkili verileri XML olarak kodlama

Bir XML belgesine birkaç resim gömmek istediğinizi varsayalım. Görüntüler ikili verilerken, XML belgesi metindir. Ancak XML, gömülü ikili verileri işleyemez. Peki nasıl yapıyorsun?

Bir seçenek, base64'deki görüntüleri kodlayarak ikili verileri XML'in işleyebileceği metne dönüştürmektir.

Onun yerine:

<images>
  <image name="Sally">{binary gibberish that breaks XML parsers}</image>
  <image name="Bobby">{binary gibberish that breaks XML parsers}</image>
</images>

siz yapıyorsunuz:

<images>
  <image name="Sally" encoding="base64">j23894uaiAJSD3234kljasjkSD...</image>
  <image name="Bobby" encoding="base64">Ja3k23JKasil3452AsdfjlksKsasKD...</image>
</images>

Ve XML ayrıştırıcı XML belgesini doğru bir şekilde ayrıştırabilir ve görüntü verilerini çıkarabilir.


Microsoft'un eski .mhtbiçimi bu şekilde olabilir (html dosyası + tek bir dosyadaki resimler).
Sridhar Sarnobat

38

Neden şu anda Base64'ü tanımlayan RFC'ye bakmıyorsunuz ?

Verilerin temel kodlaması, çoğu durumda
, eski nedenlerle US-ASCII [1] verileriyle sınırlı ortamlarda veri depolamak veya aktarmak için kullanılır. Temel kodlama, eski kısıtlamaları olmayan yeni uygulamalarda da kullanılabilir, çünkü metin editörleri ile nesneleri değiştirmeyi mümkün kılar.

Geçmişte, farklı uygulamalar farklı gereksinimlere sahipti ve bu nedenle bazen temel kodlamaları biraz farklı şekillerde uyguladılar. Günümüzde protokol spesifikasyonları bazen kesin bir açıklama veya referans olmadan genel olarak baz kodlamaları ve özellikle de "base64" kullanır. Çok amaçlı Internet Posta Uzantıları (MIME) [4] satır kaydırma veya alfabe dışı karakterler için sonuçlar dikkate alınmadan base64 için genellikle bir başvuru olarak kullanılır. Bu tarifnamenin amacı, ortak alfabe ve kodlama hususları oluşturmaktır. Bu, diğer belgelerdeki belirsizliği azaltarak daha iyi birlikte çalışabilirliğe yol açacaktır.

Base64 ilk olarak, Çok Amaçlı İnternet Posta Uzantılarının bir parçası olarak e-postalara ikili verilerin eklenmesine izin vermenin bir yolu olarak tasarlanmıştır.


26

Metinsel veriler için tasarlanan medya da elbette ikili olur, ancak metinsel medya genellikle kontrol karakterleri için belirli ikili değerleri kullanır. Ayrıca, metin ortamı belirli ikili değerleri metin olmayan olarak reddedebilir.

Base64 kodlaması, ikili verileri yalnızca metin ortamında metin olarak yorumlanabilen değerler olarak kodlar ve verilerin metin ortamında da korunabilmesi için herhangi bir özel karakter ve / veya kontrol karakteri içermez.


Base64'teki gibi, çoğunlukla hem kaynak hem de hedef verileri aynı şekilde yorumlayacaktır, çünkü büyük olasılıkla kontrol karakterlerini farklı şekillerde yorumlasalar bile bu 64 karakteri aynı şekilde yorumlayacaklardır. Bu doğru mu?
Lazer

6
Veriler transit olarak bile imha edilebilir. Örneğin, birçok FTP programı 13,10'dan 10'a kadar satır sonlarını yeniden yazar veya sunucunun ve istemcinin işletim sistemi eşleşmezse ve aktarım metin modu olarak işaretlenirse, bunun tersi de geçerlidir. FTP sadece aklıma gelen ilk örnektir, FTP iyi değildir çünkü FTP ikili modu destekliyor.
Hendrik Brummermann

@nhnb: Metin modunun ikili veri isteyen şeyler için uygun olmadığını gösterdiğinden FTP'nin güzel bir örnek olduğunu düşünüyorum.
jamesdlin

Metinsel medya nedir?
Koray Tugay

18

Medyanın dize kodlamasını doğrulaması daha fazladır , bu nedenle verilerin bir işleme uygulaması tarafından kabul edilebilir olmasını sağlamak istiyoruz (ve örneğin EOL'yi temsil eden bir ikili dizi içermiyor)

UTF-8 kodlu bir e-postada ikili veri göndermek istediğinizi düşünün - Bunların ve sıfırların akışı UTF-8 kodlamasında geçerli Unicode olmayan bir dizi oluşturursa, e-posta düzgün görüntülenmeyebilir .

URL'nin kendisinde bir URL için geçerli olmayan karakterleri kodlamak istediğimizde URL'lerde aynı tür şeyler olur:

http://www.foo.com/hello arkadaşım -> http://www.foo.com/hello%20my%20friend

Bunun nedeni, alanın kokulu olduğunu düşünecek bir sistem üzerinden boşluk göndermek istiyoruz.

Tek yaptığımız, bilinen bir iyi, kabul edilebilir ve zarar verici olmayan bit dizisi arasında başka bir gerçek bit dizisine eşleme ve işleme uygulamasının kodlamayı ayırt etmemesini sağlamaktır .

Örneğin, manilk formda geçerli ASCII olabilir; ancak genellikle rastgele ikili değerleri iletmek isteyebilirsiniz (yani bir resmi e-postaya gönderme):

MIME sürümü: 1.0
içerik açıklaması: "a.gif Base64 kodlaması"
İçerik türü: image / gif; name = "a.gif"
İçerik Aktarımı Kodlaması: Base64
İçerik Öğesi : ek; filename = "a.gif"

Burada, bir GIF görüntüsünün base64 içinde bir e-postanın parçası olarak kodlandığını görüyoruz. E-posta istemcisi başlıkları okur ve kodunu çözer. Kodlama nedeniyle GIF'in protokol olarak yorumlanabilecek hiçbir şey içermediğinden emin olabiliriz ve SMTP veya POP'un önemli bulabileceği verileri eklemekten kaçınırız.


1
Bu harika - bu açıklama tıkladı. Verileri gizlemek veya sıkıştırmak değil, sadece protokol olarak yorumlanabilecek özel dizileri kullanmaktan kaçınmaktır.
Patrick Michaelsen

13

Özel karakterlerden kaçmak yerine Base64

Size çok farklı ama gerçek bir örnek vereceğim: Bir tarayıcıda çalıştırılacak javascript kodu yazıyorum. HTML etiketlerinin kimlik değerleri vardır, ancak bir kimlikte hangi karakterlerin geçerli olduğu konusunda kısıtlamalar vardır.

Ancak kimliğimin dosya sistemimdeki dosyalara kayıpsız bir şekilde başvurmasını istiyorum. Gerçekte dosyalar ünlem işaretleri, aksanlı karakterler, tilde, hatta emoji'den her türlü garip ve harika karakterlere sahip olabilir! Bunu yapamam:

<div id="/path/to/my_strangely_named_file!@().jpg">
    <img src="http://myserver.com/path/to/my_strangely_named_file!@().jpg">
    Here's a pic I took in Moscow.
</div>

Diyelim ki böyle bir kod çalıştırmak istiyorum:

# ERROR
document.getElementById("/path/to/my_strangely_named_file!@().jpg");

Bu kod yürütüldüğünde başarısız olacağını düşünüyorum.

Base64 ile hangi dilin hangi özel karakterlere izin verdiğini ve kaçmanın gerekli olduğunu düşünmeden karmaşık bir şeye başvurabilirim:

document.getElementById("18GerPD8fY4iTbNpC9hHNXNHyrDMampPLA");

Bir MD5 veya başka bir karma işlevinden farklı olarak, verinin gerçekte ne kadar yararlı olduğunu bulmak için kodlamayı tersine çevirebilirsiniz.

Keşke Base64 yılını bilmeseydim. Saçlarımı yırtmaktan kaçınırdım ' encodeURIComponent' vestr.replace(‘\n’,’\\n’)

Metin SSH aktarımı:

Karmaşık verileri ssh üzerinden aktarmaya çalışıyorsanız (örn. Kabuk kişiselleştirmelerinizi alabilmeniz için bir dotfile), Base 64 olmadan bunu iyi şanslar yapıyorsunuz. ancak bu birden çok komut alır - bu, bir sunucuya sshing için önemli bağlantıları zorlaştırır):


12

Uygun bulduğumun bir örneği, ikili verileri XML'e gömmeye çalışırken . İkili verilerin bazıları SAX ayrıştırıcısı tarafından yanlış yorumlanıyordu, çünkü bu veriler XML özel karakterleri de dahil olmak üzere tam anlamıyla herhangi bir şey olabilir. Verici uçtaki verileri kodlayan ve alıcı uçtaki kodu çözen Base64 bu sorunu çözdü.


1
+1 - ancak bu kesinlikle SAX'a özgü değildir. Herhangi bir XML ayrıştırıcısında, yani DOM veya XLINQ'da olur.
Billy ONeal

1
@Billy: Evet, kesinlikle. Bu uygulama için bir SAX ayrıştırıcısı kullanıyordum.
Kertenkele Bill

Farklı motorlar, örneğin SAX ayrıştırıcısı, ASCII değerlerinin bazılarını farklı şekillerde (farklı kontrol karakterleri) yorumlayabilir. Dolayısıyla, buradaki fikir, evrensel olarak ortak anlamı olan ASCII alt kümesini kullanmaktır. Sağ?
Lazer

1
@Lazer: Doğru. Kodlanmamış ikili veriler, ASCII olarak yorumlamaya çalıştığınızda (bu durumda değildi) şans eseri kontrol karakterlerine sahip olacaktır.
Kertenkele Bill

10

Çoğu bilgisayar verileri 8 bit ikili biçimde depolar, ancak bu bir zorunluluk değildir. Bazı makineler ve iletim ortamları aynı anda yalnızca 7 bit (veya belki daha az) işleyebilir. Böyle bir ortam akışı 7 bitlik katlar halinde yorumlar, bu nedenle 8 bitlik veri gönderirseniz, diğer taraftan beklediğiniz şeyi almazsınız. Base-64, bu sorunu çözmenin sadece bir yoludur: girişi 6 bitlik bir formatta kodlar, ortamınız üzerinden gönderir ve alıcı uçta 8 bitlik bir formatta çözersiniz.


3
Akım 7 bitten sonra kesilirse neden sorun olur? Sonunda, diğer makine akış üzerinden alınan tüm verilere sahip olacak, daha sonra görüntülemek için 8 bit formatını seçebilir mi? Aklımdaki sorun ne!
mallaudin

6

Diğer (biraz uzun) cevaplara ek olarak: sadece 7 bit ASCII'yi destekleyen eski sistemleri göz ardı etmek bile, metin modunda ikili veri sağlama ile ilgili temel sorunlar şunlardır:

  • Yeni satırlar genellikle metin modunda dönüştürülür.
  • Bir NUL baytını bir metin dizesinin sonu olarak ele almamaya dikkat edilmelidir, bu da C soylu herhangi bir programda yapılması çok kolaydır.

Bazı platformlarda dosya sonu olarak yorumlanan ^ C, ^ D ve ^ Z gibi kontrol karakterleri de vardır.
dan04

5

"Metin verileriyle başa çıkmak için tasarlanmış medya" ne anlama geliyor?

Bu protokollerin ikili veri (.png ve .jpg görüntüleri gibi) yerine metni (genellikle yalnızca İngilizce metin) işleyecek şekilde tasarlanmasıdır .

Onlar ikili ile başa çıkabilirler => herhangi bir şey ile başa çıkabilirler.

Ama bunun tersi doğru değil. Metni temsil etmek üzere tasarlanmış bir protokol, içerdiği ikili verileri hatalı şekilde işleyebilir:

  • Platforma göre farklılık gösteren satır sonları için kullanılan bayt 0x0A ve 0x0D.
  • Verilerin zamanından önce sinyal verebileceği 0x00 (NULL = C dize sonlandırıcı), 0x03 (METİN SONU), 0x04 (İLETİM SONU) veya 0x1A (DOS dosya sonu) gibi diğer kontrol karakterleri.
  • 0x7F üzerindeki baytlar (ASCII için tasarlanmış protokol varsa).
  • Geçersiz UTF-8 olan bayt dizileri.

Dolayısıyla, metin tabanlı bir protokol üzerinden ikili veri gönderemezsiniz. 94 olmayan boşluk olmayan kontrolsüz ASCII karakterlerini temsil eden baytlarla sınırlısınız. Base 64'ün seçilmesinin nedeni, iki güçle çalışmanın daha hızlı olması ve 64'ün en büyük çalışanı olmasıydı. .

Yine de bir soru. Sistemler hala bu kadar yaygın olan UTF-8 gibi ortak bir kodlama tekniği üzerinde nasıl anlaşamıyorlar?

En azından Web'de çoğunlukla var. Sitelerin çoğunda UTF-8 kullanılmaktadır .

Batı'daki sorun şu ki, 1 bayt = 1 karakter olan ve UTF-8 ile çalışamayan birçok eski yazılım var.

Doğu'daki sorun, GB2312 ve Shift_JIS gibi kodlamalara eklenmesi.

Ve Microsoft'un yanlış UTF kodlamasını seçtiği için hala ele geçirilmemiş gibi görünüyor. Windows API'sını veya Microsoft C çalışma zamanı kitaplığını kullanmak istiyorsanız, UTF-16 veya yerel ayarın "ANSI" kodlamasıyla sınırlısınız. Bu, UTF-8'i kullanmayı acı verici hale getirir, çünkü her zaman dönüştürmeniz gerekir.


5

Base64 kodlamasını neden / nasıl kullanıyoruz?

Base64,% 75 verimliliğe sahip ikili-metin kodlama şemasından biridir. Tipik ikili verilerin (görüntüler gibi) eski "8 bitlik temiz değil" kanallar üzerinden güvenli bir şekilde gönderilebilmesi için kullanılır. Daha önceki e-posta ağlarında (1990'ların başına kadar), çoğu e-posta iletisi 7 bitlik ABD-ASCII karakter kümesinde düz metindi. Pek çok erken iletişim protokolü standardı, 8 bitlik temiz değil "7 bit" iletişim bağlantıları "üzerinde çalışmak üzere tasarlanmıştır. Şema verimliliği, girişteki bit sayısı ile kodlanmış çıkıştaki bit sayısı arasındaki orandır. Onaltılık (Base16) aynı zamanda% 50 verimlilikle ikili-metin kodlama programlarından biridir.

Base64 Kodlama Adımları (Basitleştirilmiş):

  1. İkili veriler, her biri 24 bitlik (3 bayt) sürekli parçalar halinde düzenlenir.
  2. Her 24 bitlik yığın, her biri 6 bitlik dört parça halinde gruplanır.
  3. Her 6 bitlik grup karşılık gelen Base64 karakter değerlerine dönüştürülür, yani Base64 kodlaması üç sekizliyi dört kodlanmış karaktere dönüştürür. Çıkış baytlarının giriş baytlarına oranı 4: 3'tür (% 33 ek yük).
  4. İlginç bir şekilde, aynı karakterler, dört karakteri üretmek için kodlanan üç sekizli gruptaki konumlarına bağlı olarak farklı şekilde kodlanacaktır.
  5. Alıcı, orijinal mesajı kurtarmak için bu işlemi tersine çevirmek zorunda kalacaktır.

3

"Metin verileriyle başa çıkmak için tasarlanmış medya" ne anlama geliyor?

ASCII'nin dünyayı ASCII dışı değerlerle başa çıkmaya karar verdiği gün baş ağrısıydı. İnsanlar bilgi kaybetmeden tel üzerinden aktarılması için her türlü çemberden atladılar.


3
Aslında, o günlerde, ASCII her yerde bile kullanılmadı. Birçok protokolün veri aktarımı için ayrı bir metin modu ve ikili modu vardı, maalesef e-posta o zamanlar geri dönmedi. Metin modu tam olarak gereklidir çünkü ASCII'yi değil, dünyayı kodlayan tek bir metin yönetmemiştir; her bilgisayar ağının kendi favori kodlaması vardır, bu nedenle görevi değiştirilen metni yerel kodlamaya dönüştürmek için ağ geçitleri vardır, böylece bir Japon şirketi bir Amerikan iş danışmanına mojibake olmadan e-posta gönderebilir. Bu dönüşüm, açıkça, ikili veri gönderilirken istenmeyen bir durumdur.
Yalan Ryan
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.