różnica między plikiem tekstowym a plikiem binarnym

Dlaczego powinniśmy rozróżniać pliki tekstowe i binarne przy ich przesyłaniu? Dlaczego istnieją kanały przeznaczone tylko dla danych tekstowych? Na dolnym poziomie wszystkie są bitami.

Author: andrew, 2011-05-18

5 answers

Na dolnym poziomie wszystkie są bitami... prawda. Jednak niektóre kanały transmisji mają siedem bitów na bajt, a inne kanały transmisji mają osiem bitów na bajt. Jeśli przesyłasz tekst ASCII przez kanał siedmiobitowy, wszystko jest w porządku. Dane binarne zostają zniekształcone.

DODATKOWO, różne systemy używają różnych konwencji dla zakończeń linii: LF i CRLF są powszechne, ale niektóre systemy używają CR lub nel. Tryb transmisji tekstu automatycznie konwertuje zakończenia linii, co uszkodzić pliki binarne.

Jednak to wszystko w dzisiejszych czasach jest głównie historyczne. Większość kanałów transmisji jest ośmiobitowa (np. HTTP), a większość użytkowników jest w porządku z dowolnym zakończeniem linii.

Niektóre przykłady kanałów 7-bitowych: SMTP (nominalnie, bez rozszerzeń), SMS, Telnet, niektóre połączenia szeregowe. Internet nie zawsze był zbudowany na TCP / IP, a to pokazuje.

DODATKOWO Specyfikacja HTTP stwierdza, że

Gdy w formie kanonicznej, podtypy mediów typu "text" używają CRLF jako podziału linii tekstu. HTTP rozluźnia to wymaganie i pozwala na transport nośników tekstowych z samym zwykłym CR lub LF reprezentującym podział linii, gdy jest to wykonywane konsekwentnie dla całego entity-body.

 20
Author: Dietrich Epp,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2011-05-18 02:03:40

Wszystkie pliki są zapisywane w jednym z dwóch formatów plików-binarnym lub tekstowym. Oba typy plików mogą wyglądać tak samo na powierzchni, ale ich wewnętrzne struktury są różne.

Podczas gdy zarówno pliki binarne, jak i tekstowe zawierają dane przechowywane jako seria (bitów (wartości binarne 1s i Os), bity w plikach tekstowych reprezentują znaki, podczas gdy bity w plikach binarnych reprezentują dane niestandardowe.

 7
Author: munendra,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2011-12-04 09:16:41

Rozróżnienie między tymi dwoma jest ważne, ponieważ różne OSs traktują pliki tekstowe w różny sposób. Na przykład w *nix kończysz linie tylko \n, podczas gdy w MS OSs używasz \r\n, a w Macs używasz \n\r. Oprogramowanie takie jak Klienci FTP próbuje zmienić zakończenia linii w plikach tekstowych, aby pasowały do docelowego systemu operacyjnego, dodając / usuwając znaki. Ma to na celu upewnienie się, że plik tekstowy będzie wyglądał poprawnie na docelowym systemie operacyjnym.

Na przykład, jeśli utworzysz plik tekstowy w *nix z linią łamie i spróbuj skopiować go do okna jako plik binarny i otworzyć go w notatniku, nie zobaczysz żadnych zakończeń linii, ale tylko zapchanie tekstu.

 5
Author: Rasika,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2011-05-18 01:57:10

Ważne, aby dodać do już podanych odpowiedzi, że pliki tekstowe i pliki binarne reprezentują bajty, ale pliki tekstowe różnią się od plików binarnych tym, że bajty są rozumiane jako reprezentujące znaki. Mapowanie bajtów na znaki odbywa się konsekwentnie nad plikiem przy użyciu określonej strony kodowej lub Unicode. Podczas korzystania z 7 lub 8-bitowych stron kodowych można obracać pokrętłem podczas czytania tych plików i interpretować je za pomocą alfabetu angielskiego, niemieckiego, rosyjskiego lub innych. To obracanie pokrętła nie wpływa na bajty, wpływa na to, które znaki są wybrane, aby odpowiadały bajtom.

Jak stwierdzili inni, istnieje również problem kodowania separatorów podziału linii, który jest unikalny dla plików tekstowych i który może się różnić w zależności od platformy. "Łamanie linii" nie jest literą w naszym alfabecie ani symbolem, który możesz napisać, więc obowiązują do niego inne zasady.

W plikach binarnych nie ma ukrytej konwencji kodowania znaków ani na definicja "linii".

 1
Author: Mishax,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2015-05-28 10:18:02

Wszystkie pliki języka maszynowego są w rzeczywistości plikami binarnymi.

Aby otworzyć plik binarny, tryb pliku musi być wymieniony jako "rb"lub" WB " w poleceniu fopen. W przeciwnym razie wszystkie pliki są otwierane w trybie domyślnym, czyli w trybie tekstowym.

Można zauważyć, że pliki tekstowe mogą być również przechowywane i przetwarzane jako pliki binarne, ale nie viceversa.

Pliki binarne różnią się od plików tekstowych na dwa sposoby:

  1. przechowywanie znaków nowej linii
  2. EOF znak

Eg:

  • WT-t oznacza textfile
  • WB-B oznacza binaryfile

Pliki binarne nie przechowują żadnych znaków specjalnych na końcu.

 -1
Author: user6003105,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2016-03-01 15:30:13