Thread Perl und Unicode (5 answers)
Opened by Vermillion at 2009-04-06 07:32

Vermillion
 2009-04-06 07:32
#120302 #120302
User since
2008-07-18
24 Artikel
BenutzerIn
[default_avatar]
Hi,

Ich habe ein kleines Skript mit dem ich Strings aus einer Textdatei lade und anschliessend daraus ein Quiz mache. Bisher hat das immer gut geklappt da ich das nur zum englisch <-> deutsch lernen verwendet habe wo ich den Umlauten gut ausweichen konnte (ö wurde oe, usw.). Jetzt müsste ich mit dem Script aber auch französische "Abfragen" machen können und dann gibt es so zeichen wie à, é, â die in der Konsole nicht richtig angezeigt werden.

Jetzt zu meiner Frage. Gibt es eine möglichkeit die Konsole auf Unicode umzuschalten? Oder wir würdet ihr das Lösen?

Hier das Skript (läuft auf einem Windows rechner):

Code (perl): (dl )
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
#!/usr/bin/perl

use strict;
use warnings;
use List::Util 'shuffle';


print "Bitte geben Sie die Datei an.\n";
my $Datei = <STDIN>;

chomp($Datei);

open IN_FILE, "$Datei" or
   die("Could not open $Datei for reading");

my @list;       

#
# Fragen und Antworten einlesen
#
while (<IN_FILE>) {
    chomp;
    my @words = split /\t/;
    if ($#words != 1) {
        die("Malformed input $_");
    }
    push(@list, 
        {
            question => $words[0],
            answer => $words[1]
        });
}
@list=shuffle(@list);
#
# Fragen bis alles gelöst wurde
#
while ($#list > -1) {
    print "$list[0]->{question}: ";
    my $answer = <STDIN>;
    system 'cls';
    chomp($answer);
    if ($answer eq $list[0]->{answer}) {
        print "Richtig: ",
            "Die Antwort ist *$list[0]->{answer}*\n\n";
        shift(@list);

        next;
    }
    print "Falsch! ",
       "Die richtige Anwort ist: *$list[0]->{answer}*\n\n";

    push(@list, shift(@list));
}
print "All done\n"

View full thread Perl und Unicode