Bücher online kostenlos Kostenlos Online Lesen
Die Programmiersprache Ruby (German Edition)

Die Programmiersprache Ruby (German Edition)

Titel: Die Programmiersprache Ruby (German Edition) Kostenlos Bücher Online Lesen
Autoren: David Flanagan , Yukihiro Matsumoto
Vom Netzwerk:
sowie die Unicode-Kodierungen UTF-16 und UTF-32 in Big-Endian- und Little-Endian-Varianten, aber diese sind nicht eingebaut, sondern werden bei Bedarf dynamisch geladen, und die Konstanten für diese Kodierungen existieren erst, wenn sie verwendet werden.
    Wenn Sie den Namen einer Kodierung als String haben und das zugehörige
Encoding
-Objekt ermitteln möchten, verwenden Sie die Factory-Methode
Encoding.find
:
encoding = Encoding.find("utf-8")
    Wenn Sie
Encoding.find
verwenden, wird die genannte Kodierung bei Bedarf dynamisch geladen.
Encoding.find
akzeptiert Kodierungsnamen sowohl in Groß- als auch in Kleinbuchstaben. Rufen Sie die Methode
name
einer
Encoding
auf, um ihren Namen als String zu erhalten.
    Wenn Sie eine Liste verfügbarer Kodierungen brauchen, rufen Sie die Methode
Encoding.list
auf, die ein Array von
Encoding
-Objekten zurückgibt. Die Methode
Encoding.list
listet nur die eingebauten Kodierungen sowie diejenigen Kodierungen auf, die bereits dynamisch geladen wurden. Ein Aufruf von
Encoding.find
kann dazu führen, dass neue Kodierungen geladen werden. Diese neuen Kodierungen werden durch nachfolgende Aufrufe von
Encoding.list
aufgelistet.
    Verwenden Sie
Encoding.default_external
, um das
Encoding
-Objekt zu erhalten, das die externe Standardkodierung repräsentiert (siehe „2.4.2 Quellkodierung und externe Standardkodierung“ ). Um die Kodierung für die aktuelle Locale zu erhalten, rufen Sie
Encoding.locale_charmap
auf und übergeben Sie den Ergebnis-String an
Encoding.find
.
    Die meisten Methoden, die ein
Encoding
-Objekt erwarten, akzeptieren auch
nil
als Synonym für
Encoding::BINARY
(d.h. unkodierte Bytes). Die meisten Methoden akzeptieren auch einen Kodierungsnamen (etwa
ascii
,
binary
,
utf-8
,
euc-jp
oder
sjis
) statt eines
Encoding
-Objekts.
    Die von der Transkodierungsmethode
encode
unterstützten Kodierungen können eine Obermenge der von der Klasse
Encoding
unterstützten Kodierungen sein. Das heißt, dass es (je nachdem, welche Kodierungen Ihre Version und Distribution von Ruby unterstützen) möglich sein kann,
encode
zum Transkodieren eines Zeichen-String in einen Byte-String zu verwenden, den Ruby nicht als Zeichen interpretieren kann. Dies kann zum Beispiel bei der Kommunikation mit einem veralteten Server erforderlich sein, der eine ungewöhnliche Zeichenkodierung verwendet. Sie können
Encoding
-Objekte and die Methode
encode
übergeben, aber wenn Sie mit Kodierungen arbeiten, die nicht durch die Klasse
Encoding
unterstützt werden, müssen Sie den Namen der Kodierung als String angeben.
    3.2.6.3 Mehr-Byte-Zeichen in Ruby 1.8
    Normalerweise behandelt Ruby 1.8 alle Strings als Abfolgen von 8-Bit-Bytes. Es gibt eine rudimentäre Unterstützung für Mehr-Byte-Zeichen (für die Kodierungen UTF-8, EUC oder SJIS) im Modul
jcode
der Standardbibliothek.
    Um diese Bibliothek zu verwenden, binden Sie das Modul
jcode
mit
require
ein und weisen Sie der globalen Variablen
$KCODE
die Kodierung zu, die Ihre Mehr-Byte-Zeichen verwenden. (Alternativ können Sie die Kommandozeilenoption
-K
verwenden, wenn Sie den Ruby-Interpreter starten.) Die Bibliothek
jcode
definiert eine neue Methode namens
jlength
für
String
-Objekte: Sie gibt die Länge des String in Zeichen statt in Byte zurück. Die existierenden 1.8-Methoden
length
and
size
bleiben unverändert – sie geben die String-Länge in Byte zurück.
    Die Bibliothek
jcode
modifiziert den Array-Index-Operator für String nicht und ermöglicht keinen beliebigen Zugriff auf die Zeichen, aus denen ein Mehr-Byte-String besteht. Dafür definiert sie einen neuen Iterator namens
each_char
, der genauso funktioniert wie der Standard-Iterator
each_byte
, aber jedes Zeichen des String (als String und nicht als Zeichencode) an den Codeblock übergibt, den Sie angeben:
$KCODE = "u" # Unicode UTF-8 festlegen oder Ruby mit der Option -Ku starten
require "jcode" # Unterstützung für Mehr-Byte-Zeichen laden
mb = "2\303\2272=4" # Dies ist "2∞2=4" mit Unicode-Multiplikationszeichen
mb.length # => 6: In diesem String sind 6 Bytes
mb.jlength # => 5: Aber nur fünf Zeichen
mb.mbchar? # => 1: Position des ersten Mehr-Byte-Zeichens oder nil
mb.each_byte do |c| # Über die Bytes des String iterieren.
print c, " " # c ist Fixnum
end # Gibt "50 195 151 50 61 52 " aus
mb.each_char do |c| # Über die Zeichen des String iterieren
print c, " " # c ist ein String mit jlength 1 und variabler length
end # Gibt "2 ∞ 2 = 4 " aus
    Die Bibliothek
jcode
modifiziert außerdem

Weitere Kostenlose Bücher