Was ist die Standard-Zeichenkodierung?

8

Ich selbst weiß nicht, wie tief diese Frage tatsächlich geht (zum Beispiel, soweit ich weiß, kann es je nach meiner Aufgabe mehrere geben).

Insbesondere interessiert mich, welche Arten von Zeichenfolgen zum Benennen von Dateien und Ordnern auf dem System verwendet werden.

Ich bin auch daran interessiert, wie Zeichenfolgen standardmäßig für ein Bash- oder Python-Skript dargestellt werden.

gabkdlly
quelle
Dies ist eine gute Frage, insbesondere wenn Sie von Windows konvertiert haben und Quellcode zu einem Versionskontrollsystem beitragen. Nach dem Wechsel zu Ubuntu können plötzlich unlesbare Sonderzeichen auftreten, da Windows normalerweise kein UTF-8 verwendet.
Bananeweizen

Antworten:

3
  • Die Codierung von Dateinamen im Dateisystem ist utf-8.
  • Bash denkt in Bytes, nicht mit Strings-with-Coding-Wissen. Also keine Standardkodierung. Die Standardcodierung von gnome-terminal ist utf-8
  • Die Standardcodierung von Python ist ASCII
Dennis Kaarsemaker
quelle
Python 3 (glaube ich?) Wechselt standardmäßig zu Unicode-Strings.
Broam
Der str () -Typ von Python 3 ist ein Unicode-Objekt in der internen UCS-2- oder UCS-4-Codierung. Wie Daten aus z. B. Dateien und stdin gelesen oder geschrieben werden, muss vom Entwickler der Anwendung / Bibliothek festgelegt werden, wobei utf-8 Standard ist (z. B. print (some_str) druckt eine utf-8-Darstellung).
Dennis Kaarsemaker
Python 3 wird wie Ruby 1.9 Unicode. Python 2 und weniger, wie Ruby 1.8 und weniger, sind ASCII-basiert und funktionieren mit allen Zeichensätzen, aber ihre Vorstellung von der Zeichenanzahl für Unicode-Zeichenfolgen ist falsch. (was normalerweise kein Problem ist)
Ralf
3
gnome-terminal ist nicht standardmäßig utf-8; Es wird nur das verwendet, auf das Ihr Gebietsschema eingestellt ist. (Wie ich kürzlich auf die harte
Tour
1
@DennisKaarsemaker Nein, Python3 überlässt die Codierung nicht nur dem Entwickler und verwendet die Standardeinstellung UTF-8. Stdin und -out verwenden beispielsweise standardmäßig die Codierung der Umgebung!
Robert Siemer
7

Die Standard - Zeichenkodierung UTF-8 (Unicode), obwohl fast alle (möglicherweise alle auf einem Standard - Installation) Dateinamen sind regelmäßige ASCII - Zeichen, die in den meisten Kodierungen.

Ich weiß nicht, was Sie unter "wie viele Zeichenfolgen durch ein Bash- oder Python-Skript dargestellt werden" verstehen. Sie können Unicode-Zeichen in Bash-Skripten unter Ubuntu verwenden, aber normalerweise rufen Sie mit einem Bash-Skript andere Programme auf, und ob diese anderen Programme damit umgehen, ist eine andere Frage. Dies ist sicherlich auch mit Python möglich, obwohl Sie sich mit den damit verbundenen Paketen und Einstellungen vertraut machen möchten.

frabjous
quelle