Die Programmiersprache Ruby (German Edition)
Die lexikalischen Regeln von Ruby werden anhand von Zeichen des ASCII-Zeichensatzes definiert. Kommentare beginnen beispielsweise mit dem Zeichen
#
(ASCII-Code 35), und die erlaubten Whitespace-Zeichen sind horizontaler Tab (ASCII 9), Zeilenvorschub (Line Feed, 10), vertikaler Tab (11), Seitenvorschub (Form Feed, 12), Wagenrücklauf (Carriage Return, 13) und Leerzeichen (Space, 32). Alle Ruby-Schlüsselwörter werden mithilfe von ASCII-Zeichen geschrieben, und auch alle Operatoren und die weitere Zeichensetzung entstammen dem ASCII-Zeichensatz.
Standardmäßig geht der Ruby-Interpreter davon aus, dass Ruby-Quellcode in ASCII kodiert ist. Das ist jedoch keine Voraussetzung; der Interpreter kann auch Dateien verarbeiten, die andere Kodierungen verwenden, solange diese den vollen Satz von ASCII-Zeichen darstellen können. Damit der Ruby-Interpreter die Bytes einer Quelldatei als Zeichen interpretieren kann, muss er wissen, welche Kodierung er verwenden soll. Ruby-Dateien können ihre eigenen Kodierungen festlegen, oder Sie können dem Interpreter mitteilen, wie sie kodiert sind. Wie das geht, lässt sich kurz erklären.
Der Ruby-Interpreter ist eigentlich ziemlich flexibel bezüglich der Zeichen, die in einem Ruby-Programm erscheinen. Bestimmte ASCII-Zeichen haben spezifische Bedeutungen, und bestimmte ASCII-Zeichen sind nicht in Bezeichnern erlaubt, aber abgesehen davon kann ein Ruby-Programm jedes Zeichen enthalten, das die Kodierung erlaubt. Wir haben weiter oben erklärt, dass Bezeichner Zeichen außerhalb des ASCII-Zeichensatzes enthalten dürfen. Dasselbe gilt für Kommentare, String-Literale und reguläre Ausdrücke: Sie können jedes Zeichen enthalten außer dem Begrenzungszeichen, das das Ende des Kommentars beziehungsweise Literals kennzeichnet. In ASCII-kodierten Dateien können Strings beliebige Bytes enthalten, einschließlich derjenigen, die nicht druckbare Steuerzeichen darstellen. (Eine derartige Verwendung von Rohbytes ist allerdings nicht empfehlenswert; Ruby-String-Literale unterstützen Escape-Sequenzen, so dass beliebige Zeichen stattdessen durch numerische Codes eingefügt werden können.) Wenn die Datei mithilfe der UTF-8-Kodierung geschrieben wurde, dann können Kommentare, Strings und reguläre Ausdrücke beliebige Unicode-Zeichen enthlten. Wenn die Datei die japanische SJIS- oder EUC-Kodierung verwendet, dann können Strings Kanji-Zeichen enthalten.
2.4.1 Die Programmkodierung festlegen
Standardmäßig geht der Ruby-Interpreter davon aus, dass Programme in ASCII kodiert sind. In Ruby 1.8 können Sie mit der Kommandozeilenoption
-K
eine andere Kodierung angeben. Um ein Ruby-Programm auszuführen, das Unicode-Zeichen in UTF-8-Kodierung enthält, rufen Sie den Interpreter mit der Option
-Ku
auf. Programme, die japanische Zeichen in EUC-JP- oder SJIS-Kodierung enthalten, können mit den Optionen
-Ke
beziehungsweise
-Ks
gestartet werden.
Auch Ruby 1.9 unterstützt die Option
-K
, aber sie ist nicht mehr die bevorzugte Vorgehensweise, die Kodierung einer Programmdatei festzulegen. Anstatt den Benutzer eines Skripts dessen Kodierung beim Aufruf von Ruby festlegen zu lassen, kann der Autor des Skripts die Kodierung festlegen, indem er einen speziellen »Kodierungskommentar« an den Anfang der Datei stellt [ 6 ] , zum Beispiel
# coding: utf-8
Der Kommentar muss vollständig in ASCII geschrieben sein und den String
coding
enthalten, gefolgt von einem Doppelpunkt oder einem Gleichheitszeichen und dem Namen der gewünschten Kodierung (der keine Leerzeichen und keine Satzzeichen außer Bindestrich und Unterstrich enthalten darf). Whitespace ist auf beiden Seiten des Doppelpunkts oder des Gleichheitszeichens erlaubt, und der String
coding
darf ein Präfix haben, etwa
en
, um
encoding
zu schreiben. Im gesamten Kommentar, einschließlich
coding
und des Namens der Kodierung, wird nicht zwischen Groß- und Kleinschreibung unterschieden.
Kodierungskommentare werden normalerweise so geschrieben, dass sie auch einen Texteditor über die Dateikodierung informieren. Emacs-User könnten schreiben
# -*- coding: utf-8 -*-
Und vi-Benutzer können schreiben
# vi: set fileencoding=utf-8 :
Ein Kodierungskommentar wie dieser ist normalerweise nur in der ersten Zeile einer Datei gültig. Er kann jedoch in der zweiten Zeile stehen, wenn die erste Zeile ein Shebang-Kommentar ist (der ein Skript in Unix-artigen Betriebssystemen ausführbar macht):
#!/usr/bin/ruby -w
# coding: utf-8
Bei Kodierungsnamen wird nicht
Weitere Kostenlose Bücher