回答編集履歴
1
バイナリデータとバイナリ形式について追記しました
test
CHANGED
@@ -13,3 +13,23 @@
|
|
13
13
|
|
14
14
|
|
15
15
|
文字かどうかで考えると混乱しそうですね。テキスト形式というのは、「あらゆるデータを限られた(表示可能な)文字で表現できる形式」であり、パーセントエンコードもその形式の一つです。「こ」も表示可能ではあるのですが、パーセントエンコードを使うと、ASCIIという限定された文字だけで全てのデータを表現できます。限られた(表示可能な)文字で表現するための変換を伴うので、バイト数が増える場合があります。バイナリは、「元のままの形で扱う」ということで、バイト数は増えません。
|
16
|
+
|
17
|
+
|
18
|
+
|
19
|
+
---
|
20
|
+
|
21
|
+
|
22
|
+
|
23
|
+
追記です。
|
24
|
+
|
25
|
+
バイナリデータとバイナリ形式の違い、というのも誤解の原因かもしれません。
|
26
|
+
|
27
|
+
バイナリデータというのは、文字としての表示を前提としていないデータであり、Windowsの.EXE形式のデータや、JPEGやPNGなどの画像形式のデータが例として挙げられます。
|
28
|
+
|
29
|
+
一方テキスト形式のデータ形式には、JSONやbase64、16進文字列などがあります。base64を例に取ると、UTF-8エンコードの「こ」は、base64エンコードすると 44GT という4バイトのASCII文字列になります。バイナリデータを表示可能な文字だけで表現するために、バイト数が増加する場合があります。
|
30
|
+
|
31
|
+
|
32
|
+
|
33
|
+
HTTPの場合でいうと、データのダウンロードは、通常、テキストデータもバイナリデータも「生の形」でダウンロードされます。バイナリ形式としてダウンロードしていることになります。
|
34
|
+
|
35
|
+
一方、データをブラウザからサーバーに送る(アップロードする)場合は、通常はパーセントエンコード(URLエンコードとも言う; application/x-www-form-urlencoded )という「テキスト形式」で送りますが、この形式は最大で元のバイト数の3倍になります。ファイルのアップロードに使うmultipart/form-dataは元データをエンコードせず生の形で送信するので、「バイナリのままで」送信することになります。区切りなどは別にすると、multipart/form-data形式はデータのバイト数が増えることはありません。
|