GNU/Linux >> LINUX-Kenntnisse >  >> Linux

Was sind die Unterschiede zwischen Linux- und Windows-.txt-Dateien (Unicode-Codierung)

„Unicode“ unter Windows ist UTF-16LE, und jedes Zeichen besteht aus 2 oder 4 Bytes. Linux verwendet UTF-8 und jedes Zeichen ist zwischen 1 und 4 Byte groß.

„Das absolute Minimum, das jeder Softwareentwickler unbedingt und positiv über Unicode und Zeichensätze wissen muss (keine Ausreden!)“


Zeilenumbrüche

Windows verwendet CRLF (\r\n , 0D 0A ) Zeilenenden, während Unix nur LF (\n) verwendet , 0A ).

Zeichenkodierung

Die meisten modernen (d. h. seit 2004 oder so) Unix-ähnlichen Systeme machen UTF-8 zur Standardzeichenkodierung.

Windows fehlt jedoch die native Unterstützung für UTF-8. Es arbeitet intern in UTF-16 und geht davon aus, dass char -basierte Zeichenfolgen befinden sich in einer Legacy-Codepage. Glücklicherweise kann Notepad UTF-8-Dateien lesen; leider ist die "ANSI"-Kodierung immer noch die Standardeinstellung.

Problematische Sonderzeichen

U+001A ERSATZ

Windows verwendet (selten) Ctrl +Z als Dateiendezeichen. Wenn Sie beispielsweise type eine Datei an der Eingabeaufforderung, wird sie am ersten 1A abgeschnitten Byte.

Unter Unix Strg +Z ist nichts besonderes.

U+FEFF NULL MIT NO-BREAK SPACE (Byte-Order Mark)

Unter Windows beginnen UTF-8-Dateien oft mit einer "Byte-Order-Marke" EF BB BF um sie von ANSI-Dateien zu unterscheiden.

Unter Linux wird von der BOM abgeraten, da sie Dinge wie Shebang-Zeilen in Shell-Skripten unterbricht. Außerdem wäre es sinnlos, eine UTF-8-Signatur zu haben, wenn UTF-8 sowieso die Standardkodierung ist.


Ein Unterschied, den ich gehört habe, ist die Verwendung von \r\n (Windows) vs. \n für Zeilenumbrüche (Linux).

Ja. Die meisten UNIX-Texteditoren handhaben dies automatisch, Windows-Programmierer-Editoren können dies handhaben, allgemeine Texteditoren (Basis-Editor) nicht.

Windows scheint in einigen Kontexten auch das EOF (Strg-Z) als END OF FILE zu benötigen, während Sie es unter UNIX wahrscheinlich nie sehen werden.

Denken Sie daran, dass MacOS X jetzt UNIX darunter ist, also UNIX-Zeilenenden verwendet. Allerdings hatte es vor OS X (MacOS 9 und darunter) seine eigene Endung (\r)

EDIT:in anderem Format CR und LF:

  • \n ist ASCII 0x0A, Zeilenvorschub (LF)
  • \r ist ASCII 0x0D, Wagenrücklauf (CR)

Linux
  1. MySQL vs. MariaDB:Was sind die Hauptunterschiede zwischen ihnen?

  2. Linux – Dateien zwischen Linux-Host und Windows-Gast teilen?

  3. Was sind die nativen Betriebssystem-/Systemaufrufe von Windows und Linux, die von malloc() ausgeführt werden?

  4. Was ist der Unterschied zwischen „locate“ und „find“ in Linux?

  5. Was sind die Unterschiede zwischen rdesktop und xfreerdp?

Was ist der Unterschied zwischen macOS- und Linux-Kernels

Was ist der Unterschied zwischen Linux und Unix?

Installieren Sie Dropbox, um Dateien zwischen Linux und Windows auszutauschen

So teilen Sie Steam-Spieldateien zwischen Linux und Windows

Was sind die Unterschiede zwischen cPanel und WHM?

Freigabe von Dateien zwischen Linux Mint und Windows 10