Mengapa kami menggunakan Base64?

276

Wikipedia mengatakan

Skema pengkodean Base64 biasanya digunakan ketika ada kebutuhan untuk menyandikan data biner yang perlu disimpan dan ditransfer melalui media yang dirancang untuk menangani data tekstual. Ini untuk memastikan bahwa data tetap utuh tanpa modifikasi selama transportasi.

Tapi bukankah data selalu disimpan / ditransmisikan dalam biner karena memori yang dimiliki mesin kami menyimpan biner dan itu hanya tergantung bagaimana Anda menafsirkannya? Jadi, apakah Anda menyandikan pola bit 010011010110000101101110seperti Mandi ASCII atau seperti TWFudi Base64, Anda akhirnya akan menyimpan pola bit yang sama.

Jika pengkodean terakhir adalah dalam hal nol dan satu dan setiap mesin dan media dapat mengatasinya, bagaimana bedanya jika data direpresentasikan sebagai ASCII atau Base64?

Apa artinya "media yang dirancang untuk menangani data tekstual"? Mereka dapat menangani biner => mereka dapat menangani apa saja.


Terima kasih semuanya, saya pikir saya mengerti sekarang.

Ketika kami mengirim data, kami tidak dapat memastikan bahwa data tersebut akan ditafsirkan dalam format yang sama seperti yang kami inginkan. Jadi, kami mengirim data berkode dalam beberapa format (seperti Base64) yang dimengerti oleh kedua belah pihak. Dengan cara itu bahkan jika pengirim dan penerima mengartikan hal yang sama secara berbeda, tetapi karena mereka menyetujui format kode, data tidak akan ditafsirkan secara salah.

Dari contoh Mark Byers

Jika saya ingin mengirim

Hello
world!

Salah satu caranya adalah mengirimkannya dalam ASCII like

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

Tetapi byte 10 mungkin tidak ditafsirkan dengan benar sebagai baris baru di ujung lainnya. Jadi, kami menggunakan subset ASCII untuk menyandikannya seperti ini

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

yang dengan biaya lebih banyak data yang ditransfer untuk jumlah informasi yang sama memastikan bahwa penerima dapat mendekode data dengan cara yang dimaksudkan, bahkan jika penerima kebetulan memiliki interpretasi yang berbeda untuk sisa rangkaian karakter.

Lazer
sumber
6
Latar belakang historis: Server email dulu ASCII 7-bit. Banyak dari mereka akan mengatur bit tinggi ke 0 sehingga Anda harus mengirim nilai 7-bit saja. Lihat en.wikipedia.org/wiki/Email#Content_encoding
Harold L
53
Kami menggunakan base64 karena lebih mudah dibaca daripada Perl
Martin
2
@ Martin, Anda bercanda. Perl sulit dibaca, tetapi base64 tidak dapat dibaca sama sekali.
Peter Long
1
@ Lazer Gambar Anda tidak ada
Mick
2
@ Lazer, "Tapi byte 10 mungkin tidak ditafsirkan dengan benar sebagai baris baru di ujung yang lain." Mengapa? kedua pihak telah menyetujui ASCII dan mereka harus menafsirkannya dengan benar!
ProgramCpp

Jawaban:

299

Kesalahan pertama Anda adalah berpikir bahwa pengkodean ASCII dan pengkodean Base64 dapat dipertukarkan. Mereka tidak. Mereka digunakan untuk tujuan yang berbeda.

  • Saat Anda menyandikan teks dalam ASCII, Anda mulai dengan string teks dan mengonversinya menjadi urutan byte.
  • Ketika Anda menyandikan data di Base64, Anda mulai dengan urutan byte dan mengubahnya menjadi string teks.

Untuk memahami mengapa Base64 diperlukan, kita perlu sedikit sejarah komputasi.


Komputer berkomunikasi dalam biner - 0s dan 1s - tetapi orang biasanya ingin berkomunikasi dengan data formulir yang lebih kaya seperti teks atau gambar. Untuk mentransfer data ini antara komputer, pertama-tama komputer harus disandikan ke dalam 0s dan 1s, dikirim, lalu diuraikan kembali. Untuk mengambil teks sebagai contoh - ada banyak cara untuk melakukan pengkodean ini. Akan jauh lebih sederhana jika kita semua bisa menyetujui satu pengkodean, tetapi sayangnya ini tidak terjadi.

Awalnya banyak pengkodean yang berbeda dibuat (misalnya kode Baudot ) yang menggunakan jumlah bit yang berbeda per karakter sampai akhirnya ASCII menjadi standar dengan 7 bit per karakter. Namun sebagian besar komputer menyimpan data biner dalam byte yang masing-masing terdiri dari 8 bit sehingga ASCII tidak cocok untuk mentransfer jenis data ini. Beberapa sistem bahkan akan menghapus bit yang paling signifikan. Lebih jauh lagi, perbedaan dalam pengkodean garis akhir di seluruh sistem berarti bahwa karakter ASCII 10 dan 13 juga kadang-kadang dimodifikasi.

Untuk mengatasi masalah ini, pengkodean Base64 diperkenalkan. Ini memungkinkan Anda untuk menyandikan byte aribtrary ke byte yang diketahui aman untuk dikirim tanpa rusak (karakter alfanumerik ASCII dan beberapa simbol). Kerugiannya adalah bahwa pengkodean pesan menggunakan Base64 meningkatkan panjangnya - setiap 3 byte data dikodekan menjadi 4 karakter ASCII.

Untuk mengirim teks andal Anda bisa pertama encode ke byte menggunakan pengkodean teks pilihan Anda (misalnya UTF-8) dan kemudian setelah itu Base64 menyandikan data biner yang dihasilkan menjadi string teks yang aman untuk mengirim disandikan sebagai ASCII. Penerima harus membalik proses ini untuk memulihkan pesan aslinya. Ini tentu saja mengharuskan penerima tahu pengkodean mana yang digunakan, dan informasi ini sering perlu dikirim secara terpisah.

Secara historis telah digunakan untuk menyandikan data biner dalam pesan email di mana server email dapat memodifikasi akhir baris. Contoh yang lebih modern adalah penggunaan pengkodean Base64 untuk menanamkan data gambar secara langsung dalam kode sumber HTML . Di sini perlu untuk menyandikan data untuk menghindari karakter seperti '<' dan '>' ditafsirkan sebagai tag.


Berikut ini contoh kerjanya:

Saya ingin mengirim pesan teks dengan dua baris:

Halo
dunia!

Jika saya mengirimnya sebagai ASCII (atau UTF-8) akan terlihat seperti ini:

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

Byte 10 rusak di beberapa sistem sehingga kita dapat mendasarkan 64 mengkodekan byte ini sebagai string Base64:

SGVsbG8sCndvcmxkIQ ==

Yang ketika disandikan menggunakan ASCII terlihat seperti ini:

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

Semua byte di sini dikenal sebagai byte aman, sehingga sangat kecil kemungkinan sistem mana pun akan merusak pesan ini. Saya dapat mengirim ini sebagai ganti pesan asli saya dan membiarkan penerima membalikkan proses untuk memulihkan pesan asli.

Mark Byers
sumber
4
"sebagian besar protokol komunikasi modern tidak akan merusak data" - meskipun misalnya email mungkin, dengan agen pengiriman mengganti rangkaian karakter "\ nDari" dengan "\ n> Dari" ketika menyimpan pesan ke kotak surat. Atau tajuk HTTP diakhiri oleh baris baru tanpa ada cara yang dapat dibalikkan untuk keluar dari baris baru dalam data (kelanjutan garis mengonfigurasi spasi putih), jadi Anda tidak bisa langsung membuang ASCII yang sewenang-wenang ke dalamnya. base64 lebih baik dari hanya 7-bit yang aman, itu alpha-numerik-dan - = + / aman.
Steve Jessop
1
"Kerugiannya adalah bahwa pengkodean pesan menggunakan Base64 meningkatkan panjangnya - setiap 3 byte data dikodekan menjadi 4 byte." Bagaimana cara meningkatkannya menjadi 4 byte? Bukankah masih akan menjadi 3 * 8 = 24 bit saja?
Lazer
4
@ Jas: tidak. Lihatlah contoh Anda sendiri - "Man" adalah base-64 yang dikodekan sebagai "TWFu". 3 byte -> 4 byte. Itu karena input diperbolehkan menjadi salah satu dari 2 ^ 8 = 256 byte yang mungkin, sedangkan output hanya menggunakan 2 ^ 6 = 64 dari mereka (dan =, untuk membantu menunjukkan panjang data). 8 bit per kuartet output "terbuang", untuk mencegah output mengandung karakter "menarik" meskipun inputnya tidak.
Steve Jessop
3
Mungkin bermanfaat untuk menyatakan kembali "Ketika Anda menyandikan data di Base64, Anda mulai dengan urutan byte dan mengubahnya menjadi string teks" sebagai "Ketika Anda menyandikan data di Base64, Anda mulai dengan urutan byte dan mengubahnya menjadi urutan byte yang hanya terdiri dari nilai ASCII ". Urutan byte yang hanya terdiri dari karakter ASCII adalah yang diperlukan oleh SMTP, itulah sebabnya Base64 (dan dikutip-cetak) digunakan sebagai penyandian-transfer-konten. Tinjauan luar biasa!
ALEXintlsos
1
Saya akan memilih, tetapi memiliki 64 suara. Maaf ini sempurna.
Jessé Catrinck
61

Pengkodean data biner dalam XML

Misalkan Anda ingin menyematkan beberapa gambar dalam dokumen XML. Gambar adalah data biner, sedangkan dokumen XML adalah teks. Tetapi XML tidak bisa menangani data biner yang disematkan. Jadi, bagaimana Anda melakukannya?

Salah satu opsi adalah untuk menyandikan gambar dalam base64, mengubah data biner menjadi teks yang dapat ditangani XML.

Dari pada:

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

Anda melakukannya:

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

Dan parser XML akan dapat mengurai dokumen XML dengan benar dan mengekstrak data gambar.

yfeldblum
sumber
Ini mungkin cara .mhtkerja format lama Microsoft (file html + gambar dalam satu file).
Sridhar Sarnobat
38

Mengapa tidak melihat RFC yang saat ini mendefinisikan Base64 ?

Pengodean basis data digunakan dalam banyak situasi untuk menyimpan atau mentransfer
data dalam lingkungan yang, mungkin karena alasan sebelumnya, terbatas pada data US-ASCII [1]. Pengkodean basis juga dapat digunakan dalam aplikasi baru yang tidak memiliki batasan warisan, hanya karena memungkinkan untuk memanipulasi objek dengan editor teks.

Di masa lalu, aplikasi yang berbeda memiliki persyaratan yang berbeda dan dengan demikian kadang-kadang menerapkan pengkodean dasar dengan cara yang sedikit berbeda. Saat ini, spesifikasi protokol kadang-kadang menggunakan pengkodean basis secara umum, dan "base64" pada khususnya, tanpa deskripsi atau referensi yang tepat. Multipurpose Internet Mail Extensions (MIME) [4] sering digunakan sebagai referensi untuk base64 tanpa mempertimbangkan konsekuensi untuk karakter pembungkus garis atau non-alfabet. Tujuan dari spesifikasi ini adalah untuk menetapkan pertimbangan umum mengenai abjad dan penyandian. Mudah-mudahan ini akan mengurangi ambiguitas dalam dokumen lain, yang mengarah pada interoperabilitas yang lebih baik.

Base64 pada awalnya dirancang sebagai cara untuk memungkinkan data biner untuk dilampirkan ke email sebagai bagian dari Ekstensi Surat Internet Multiguna.

Billy ONeal
sumber
26

Media yang dirancang untuk data tekstual tentu saja akhirnya biner juga, tetapi media tekstual sering menggunakan nilai biner tertentu untuk karakter kontrol. Juga, media tekstual dapat menolak nilai biner tertentu sebagai bukan teks.

Pengkodean Base64 mengkodekan data biner sebagai nilai yang hanya dapat diartikan sebagai teks dalam media tekstual, dan bebas dari karakter khusus dan / atau karakter kontrol, sehingga data tersebut akan disimpan di seluruh media tekstual juga.

Håvard S
sumber
Jadi seperti pada Base64, sebagian besar sumber dan tujuan akan menginterpretasikan data dengan cara yang sama, karena kemungkinan besar mereka akan menafsirkan 64 karakter ini dengan cara yang sama, bahkan jika mereka menafsirkan karakter kontrol dengan cara yang berbeda. Apakah itu benar?
Lazer
6
Mereka data bahkan dapat dihancurkan dalam perjalanan. Misalnya banyak program FTP menulis ulang akhir baris dari 13,10 menjadi 10 atau melalui sebaliknya jika sistem operasi server dan klien tidak cocok dan transfer ditandai sebagai mode teks. FTP hanyalah contoh pertama yang muncul di benak saya, ini bukan yang baik karena FTP memang mendukung mode biner.
Hendrik Brummermann
@ nhnb: Saya pikir FTP adalah contoh yang bagus karena menunjukkan bahwa mode teks tidak cocok untuk hal-hal yang membutuhkan data biner.
jamesdlin
Apa itu media tekstual?
Koray Tugay
18

Lebih dari itu media memvalidasi pengkodean string, jadi kami ingin memastikan bahwa data dapat diterima oleh aplikasi penanganan (dan tidak mengandung urutan biner yang mewakili EOL misalnya)

Bayangkan Anda ingin mengirim data biner dalam email dengan pengkodean UTF-8 - Email mungkin tidak ditampilkan dengan benar jika aliran yang dan nol menciptakan urutan yang tidak valid Unicode dalam pengkodean UTF-8.

Jenis hal yang sama terjadi di URL ketika kami ingin menyandikan karakter yang tidak valid untuk URL di URL itu sendiri:

http://www.foo.com/hello teman saya -> http://www.foo.com/hello%20my%20friend

Ini karena kami ingin mengirim ruang ke sistem yang akan berpikir ruangnya bau.

Semua yang kami lakukan adalah memastikan ada pemetaan 1-ke-1 antara urutan bit yang diketahui baik, dapat diterima dan tidak merusak ke urutan bit harfiah lainnya, dan bahwa aplikasi penanganan tidak membedakan pengkodean.

Dalam contoh Anda, manmungkin ASCII valid dalam bentuk pertama; tetapi seringkali Anda mungkin ingin mengirimkan nilai-nilai yang biner acak (yaitu mengirim gambar dalam email):

MIME-Versi: 1.0
Isi-Keterangan: "Encoding Base64 a.gif"
Tipe-Konten: image / gif; name = "a.gif"
Content-Transfer-Encoding: Base64
Content-Disposition: attachment; filename = "a.gif"

Di sini kita melihat bahwa gambar GIF dikodekan dalam base64 sebagai potongan email. Klien email membaca header dan menerjemahkannya. Karena penyandian, kami dapat memastikan GIF tidak mengandung apa pun yang dapat ditafsirkan sebagai protokol dan kami menghindari memasukkan data yang mungkin dianggap signifikan oleh SMTP atau POP.

Aiden Bell
sumber
1
Itu luar biasa - penjelasan ini membuatnya klik. Ini bukan untuk mengaburkan atau memampatkan data, tetapi hanya untuk menghindari menggunakan urutan khusus yang dapat diartikan sebagai protokol.
Patrick Michaelsen
13

Base64 bukannya melarikan diri karakter khusus

Saya akan memberi Anda contoh yang sangat berbeda tetapi nyata: Saya menulis kode javascript untuk dijalankan di browser. Tag HTML memiliki nilai ID, tetapi ada kendala pada karakter apa yang valid dalam ID.

Tapi saya ingin ID saya untuk merujuk file ke sistem file saya. File dalam kenyataan dapat memiliki segala macam karakter aneh dan indah di dalamnya dari tanda seru, karakter beraksen, tilde, bahkan emoji! Saya tidak bisa melakukan ini:

<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>

Misalkan saya ingin menjalankan beberapa kode seperti ini:

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

Saya pikir kode ini akan gagal ketika dijalankan.

Dengan Base64 saya bisa merujuk ke sesuatu yang rumit tanpa khawatir tentang bahasa mana yang memungkinkan karakter khusus apa dan yang perlu melarikan diri:

document.getElementById("18GerPD8fY4iTbNpC9hHNXNHyrDMampPLA");

Tidak seperti menggunakan MD5 atau fungsi hashing lainnya, Anda dapat membalikkan penyandian untuk mengetahui data apa yang sebenarnya berguna.

Saya berharap saya tahu tentang Base64 tahun yang lalu. Saya akan menghindari merobek rambut saya dengan ' encodeURIComponent' danstr.replace(‘\n’,’\\n’)

Transfer teks SSH:

Jika Anda mencoba untuk melewatkan data yang kompleks melalui ssh (mis. Dotfile sehingga Anda bisa mendapatkan personalisasi shell Anda), semoga berhasil melakukannya tanpa Basis 64. Ini adalah bagaimana Anda akan melakukannya dengan basis 64 (saya tahu Anda bisa menggunakan SCP, tetapi itu akan mengambil banyak perintah - yang merumitkan ikatan kunci untuk sshing ke server):

Sridhar Sarnobat
sumber
12

Salah satu contoh ketika saya merasa nyaman adalah ketika mencoba menanamkan data biner dalam XML . Beberapa data biner disalahtafsirkan oleh parser SAX karena data tersebut dapat berupa apa saja, termasuk karakter khusus XML. Base64 yang mengkodekan data pada ujung transmisi dan mendekode data pada sisi penerima memperbaiki masalah itu.

Bill the Lizard
sumber
1
+1 - tetapi ini tidak berarti SAX spesifik. Itu akan terjadi pada parser XML, yaitu DOM atau XLINQ.
Billy ONeal
1
@Illy: Ya, tentu saja. Saya kebetulan menggunakan SAX parser untuk aplikasi itu.
Bill the Lizard
Mesin yang berbeda, misalnya parser SAX mungkin menafsirkan beberapa nilai ASCII dengan cara yang berbeda (karakter kontrol berbeda). Jadi, idenya di sini adalah menggunakan subset ASCII yang memiliki makna umum secara universal. Baik?
Lazer
1
@ Lazer: Benar. Data biner yang tidak terenkripsi akan memiliki karakter kontrol di dalamnya hanya secara kebetulan ketika Anda mencoba menafsirkannya sebagai ASCII (yang dalam hal ini bukan).
Bill the Lizard
10

Sebagian besar komputer menyimpan data dalam format biner 8-bit, tetapi ini bukan keharusan. Beberapa mesin dan media transmisi hanya dapat menangani 7 bit (atau bahkan lebih rendah) pada suatu waktu. Media seperti itu akan menafsirkan aliran dalam kelipatan 7 bit, jadi jika Anda mengirim data 8-bit, Anda tidak akan menerima apa yang Anda harapkan di sisi lain. Base-64 hanyalah salah satu cara untuk mengatasi masalah ini: Anda menyandikan input ke dalam format 6-bit, mengirimkannya ke media Anda dan mendekodekannya kembali ke format 8-bit di ujung penerima.

casablanca
sumber
3
Mengapa ini menjadi masalah jika aliran menyela setelah 7 bit. Pada akhirnya, mesin lain akan memiliki semua data yang diterima melalui aliran, kemudian dapat memilih format 8 bit untuk menampilkannya? Apa yang salah dengan pikiranku!
mallaudin
6

Selain jawaban lain (agak panjang): bahkan mengabaikan sistem lama yang hanya mendukung ASCII 7-bit, masalah mendasar dengan penyediaan data biner dalam mode teks adalah:

  • Baris baru biasanya ditransformasikan dalam mode teks.
  • Orang harus berhati-hati untuk tidak memperlakukan byte NUL sebagai akhir dari string teks, yang terlalu mudah dilakukan dalam program apa pun dengan garis keturunan C.
jamesdlin
sumber
Ada juga karakter kontrol seperti ^ C, ^ D, dan ^ Z yang ditafsirkan sebagai end-of-file pada beberapa platform.
dan04
5

Apa artinya "media yang dirancang untuk menangani data tekstual"?

Bahwa protokol-protokol itu dirancang untuk menangani teks (seringkali, hanya teks bahasa Inggris ) alih-alih data biner (seperti gambar .png dan .jpg).

Mereka dapat menangani biner => mereka dapat menangani apa saja.

Tetapi kebalikannya tidak benar. Protokol yang dirancang untuk merepresentasikan teks dapat memperlakukan data biner yang mengandung:

  • Bytes 0x0A dan 0x0D, digunakan untuk akhir baris, yang berbeda menurut platform.
  • Karakter kontrol lain seperti 0x00 (NULL = C string terminator), 0x03 (END OF TEXT), 0x04 (END OF TRANSMISSION), atau 0x1A (DOS end-of-file) yang mungkin memberi sinyal sebelum data berakhir.
  • Bytes di atas 0x7F (jika protokol yang dirancang untuk ASCII).
  • Urutan byte yang tidak valid UTF-8.

Jadi, Anda tidak bisa hanya mengirim data biner melalui protokol berbasis teks. Anda terbatas pada byte yang mewakili karakter ASCII non-ruang non-kontrol, yang ada 94. Alasan Basis 64 dipilih adalah bahwa lebih cepat untuk bekerja dengan kekuatan dua, dan 64 adalah yang terbesar yang bekerja .

Namun satu pertanyaan. Bagaimana sistem itu masih tidak setuju pada teknik pengkodean umum seperti UTF-8 begitu umum?

Di Web, setidaknya, kebanyakan dari mereka memilikinya. Mayoritas situs menggunakan UTF-8 .

Masalahnya di Barat adalah bahwa ada banyak perangkat lunak lama yang menganggap bahwa 1 byte = 1 karakter dan tidak dapat bekerja dengan UTF-8.

Masalahnya di Timur adalah lampiran mereka untuk pengkodean seperti GB2312 dan Shift_JIS.

Dan fakta bahwa Microsoft tampaknya masih belum mengerti telah memilih pengkodean UTF yang salah. Jika Anda ingin menggunakan Windows API atau perpustakaan runtime Microsoft C, Anda terbatas pada UTF-16 atau penyandian "ANSI" lokal. Ini membuatnya menyakitkan untuk menggunakan UTF-8 karena Anda harus mengonversi setiap saat.

dan04
sumber
5

Mengapa / Bagaimana kita menggunakan pengkodean Base64?

Base64 adalah salah satu skema pengkodean biner ke teks yang memiliki efisiensi 75%. Ini digunakan agar data biner yang umum (seperti gambar) dapat dengan aman dikirim melalui saluran lama "bukan 8-bit bersih". Dalam jaringan email sebelumnya (hingga awal 1990-an), sebagian besar pesan email berupa teks biasa dalam rangkaian karakter AS-ASCII 7-bit. Begitu banyak standar protokol komunikasi awal yang dirancang untuk bekerja di atas "7-bit" tautan "tidak 8-bit bersih". Efisiensi skema adalah rasio antara jumlah bit dalam input dan jumlah bit dalam output yang dikodekan. Hexadecimal (Base16) juga merupakan salah satu skema pengkodean biner-ke-teks dengan efisiensi 50%.

Langkah-langkah Pengkodean Base64 (Sederhana):

  1. Data biner diatur dalam potongan kontinu masing-masing 24 bit (3 byte).
  2. Setiap potongan 24 bit dikelompokkan menjadi empat bagian masing-masing 6 bit.
  3. Setiap grup 6 bit dikonversi ke nilai karakter Base64 yang sesuai, yaitu pengkodean Base64 mengubah tiga oktet menjadi empat karakter yang dikodekan. Rasio output byte ke input byte adalah 4: 3 (33% overhead).
  4. Menariknya, karakter yang sama akan dikodekan secara berbeda tergantung pada posisinya dalam kelompok tiga oktet yang dikodekan untuk menghasilkan empat karakter.
  5. Penerima harus membalik proses ini untuk memulihkan pesan aslinya.
Mushtaq Hussain
sumber
3

Apa artinya "media yang dirancang untuk menangani data tekstual"?

Kembali pada hari ketika ASCII memerintah dunia berurusan dengan nilai-nilai non-ASCII adalah sakit kepala. Orang-orang melompati segala macam rintangan untuk mendapatkan ini ditransfer melalui kabel tanpa kehilangan informasi.

secara langsung
sumber
3
Sebenarnya, pada hari itu, ASCII bahkan tidak digunakan di mana-mana. Banyak protokol memiliki mode teks dan mode biner terpisah untuk mentransfer data, sayangnya email tidak begitu. Mode teks diperlukan tepat karena tidak ada satu pun penyandian teks yang menguasai dunia, bukan ASCII; setiap jaringan komputer memiliki penyandian favorit sendiri, jadi ada gateway yang tugasnya adalah mengubah teks yang dipertukarkan ke penyandian lokal sehingga perusahaan Jepang dapat mengirim email ke konsultan bisnis Amerika tanpa mojibake. Konversi ini, jelas, tidak diinginkan ketika mengirim data biner.
Lie Ryan