Die Programmiersprache Ruby (German Edition)
zwischen Groß- und Kleinschreibung unterschieden; sie können in Großbuchstaben, in Kleinbuchstaben oder in einer Mischung daraus geschrieben werden. Ruby 1.9 unterstützt mindestens die folgenden Quellkodierungen: ASCII-8BIT (auch als BINARY bekannt), US-ASCII (7-Bit-ASCII), die europäischen Kodierungen ISO-8859-1 bis ISO-8859-15, die Unicode-Kodierung UTF-8 sowie die japanischen Kodierungen SHIFT-JIS (auch als SJIS bekannt) und EUC-JP. Ihre Version oder Distribution von Ruby unterstützt möglicherweise noch andere Kodierungen.
Als Spezialfall identifizieren UTF-8-kodierte Dateien ihre Kodierung, wenn die ersten drei Bytes der Datei 0xEF 0xBB 0xBF sind. Diese Bytes sind als BOM oder »Byte Order Mark« bekannt und in UTF-8-kodierten Dateien optional. (Bestimmte Windows-Programme fügen diese Bytes beim Speichern von Unicode-Dateien hinzu.)
In Ruby 1.9 ergibt das Sprachschlüsselwort
__ENCODING__
(mit je zwei Unterstrichen am Anfang und am Ende) die Quellkodierung des aktuell ausgeführten Codes. Der erhaltene Wert ist ein
Encoding
-Objekt. (Siehe „3.2.6.2 Die Klasse Encoding“ für Einzelheiten über die Klasse
Encoding
.)
2.4.2 Quellkodierung und externe Standardkodierung
In Ruby 1.9 ist es wichtig, den Unterschied zwischen der Quellkodierung und der externen Standardkodierung eines Ruby-Prozesses zu verstehen. Die Quellkodierung haben wir oben bereits beschrieben: Sie teilt dem Ruby-Interpreter mit, wie Zeichen in einem Skript gelesen werden. Quellkodierungen werden üblicherweise durch Coding-Kommentare gesetzt. Ein Ruby-Programm kann aus mehr als einer Datei bestehen, und verschiedene Dateien können unterschiedliche Quellkodierungen haben. Die Quellkodierung einer Datei beeinflusst die Kodierung der String-Literale in dieser Datei. Mehr über die Kodierung von Strings erfahren Sie in „3.2.6 String-Kodierungen und Multibyte-Zeichen“ .
Die externe Standardkodierung ist etwas anderes: Es handelt sich um die Kodierung, die Ruby standardmäßig zum Lesen aus Dateien und Datenströmen verwendet. Die externe Standardkodierung gilt global für den Ruby-Prozess und ändert sich nicht von Datei zu Datei. Normalerweise basiert die externe Standardkodierung auf der Locale, die auf Ihrem Computer konfiguriert ist. Aber Sie können die externe Standardkodierung auch explizit mit Hilfe von Kommandozeilenoptionen setzen, was wir in Kürze beschreiben werden. Die externe Standardkodierung beeinflusst nicht die Kodierung von String-Literalen, ist aber ziemlich wichtig für I/O, wie wir in „9.7.2 Streams und Kodierungen“ sehen werden.
Weiter oben haben wir die Interpreter-Option
-K
als Möglichkeit zum Setzen der Quellkodierung beschrieben. In Wirklichkeit setzt diese Option die externe Standardkodierung des Prozesses und verwendet diese dann auch als Standard-Quellkodierung.
In Ruby 1.9 existiert die Option
-K
aus Gründen der Kompatibilität mit Ruby 1.8 weiter, ist aber nicht die bevorzugte Methode zum Setzen der externen Standardkodierung. Zwei neue Optionen,
-E
und
--encoding
, ermöglichen es Ihnen, eine Kodierung durch ihren vollen Namen statt durch eine Ein-Zeichen-Abkürzung anzusprechen, zum Beispiel
ruby -E utf-8 # Kodierungsname folgt auf -E
ruby -Eutf-8 # Das Leerzeichen ist optional
ruby --encoding utf-8 # Kodierung hinter --encoding, mit Leerzeichen
ruby --encoding=utf-8 # Oder verwenden Sie Gleichheitszeichen mit --encoding
Siehe „10.1 Den Ruby-Interpreter aufrufen“ für die vollständigen Details.
Sie können die externe Standardkodierung mit
Encoding.default_external
abfragen. Diese Klassenmethode gibt ein
Encoding
-Objekt zurück. Verwenden Sie
Encoding.locale_charmap
, um den Namen der aus der Locale ermittelten Zeichenkodierung (als String) zu erhalten. Diese Methode basiert stets auf den Locale-Einstellungen und ignoriert Kommandozeilenoptionen, die die externe Standardkodierung überschreiben.
2.5 Programmausführung
Ruby ist eine Skriptsprache. Das bedeutet, dass Ruby-Programme einfach Listen oder Skripten aus auszuführenden Anweisungen sind. Standardmäßig werden diese Anweisungen sequenziell ausgeführt, in der Reihenfolge, in der sie auftreten. Die Ruby-Kontrollstrukturen (in Kapitel 5 beschrieben) modifizieren diese Standard-Ausführungsreihenfolge und ermöglichen beispielsweise die bedingte oder wiederholte Ausführung von Anweisungen.
Programmierer, die an traditionelle statische Compilersprachen wie C oder Java gewöhnt sind, könnten das leicht verwirrend finden.
Weitere Kostenlose Bücher