Thread Encoding, Umlaute, ... (19 answers)
Opened by roli at 2015-07-10 14:04

roli
 2015-07-13 13:24
#181557 #181557
User since
2004-12-31
424 Artikel
BenutzerIn
[default_avatar]
2015-07-13T10:58:21 bianca
Was hast denn immer mit deinem cp850 und cp1252? Wo kommt das her, was willst du damit?

Diese Codepages sind nun mal die Standardeinstellungen für das Encoding der Dos-Box an den Windows Rechnern mit denen ich zu tun habe. Was ich damit will, ganz einfach, ich möchte es den Nutzern der Scripte so einfach wie möglich machen. Wenn man jedem erklären muss, wie man "Windows Perl komatibel macht" indem man die Codepage wechselt, den Konsolenfont umstellt, ..., steigert das nicht wirklich die Akzeptenz.

2015-07-13T10:58:21 bianca
Und deine letzte Konsolenausgabe sah doch gut aus. Was gefällt dir daran nicht?
Sind dir die zweite und dritte Zeile nicht aufgefallen? Da gab es noch:
Quote
߀ <
<
gratis obendrauf, um es mal so zu sagen.

2015-07-13T10:58:21 bianca
Und wieso lädtst du die Bilder nicht hier hoch?

Keine Ahnung, die Information ist doch auch so zugänglich.

2015-07-13T10:58:21 bianca
Sonst sag bitte nochmal ganz genau, was am Ende in der Ausgabe raus kommen soll. Ich hab es bisher so verstanden, dass UTF-8 rauskommen soll und das tut mein Script.

Ich möchte ein Script haben, das auf einem Windows System läuft, nach Möglichkeit nichts vorher an den Systemeinstellungen verändert, und mir dann in der Dos-Box sowie in einer Datei "äöüßÄÖÜ€" ausgibt.

Ich habe dein Script jetzt nochmal etwas angepasst, und bin beinahe so weit:
Code (perl): (dl )
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
#!/usr/bin/perl
use Modern::Perl '2015';
use Encode qw(decode encode);

my $encoding = $^O eq 'MSWin32' ? 'cp1252' : 'utf8';
binmode(STDOUT, ":encoding($encoding)" );
binmode(STDERR, ":encoding($encoding)" );
binmode(STDIN,  ":encoding($encoding)" );

my $testtext = 'öäüÖÄÜ߀';
my $data2 = decode "$encoding", $testtext;
open my $fh, '>', "test.txt" or die $!;
say $fh $data2;
close($fh);
say "\nData2: > $data2 <\n";

Die Datei ist ok, der Output in der Dosbox auch weitestgehend, nur das "Wide character in say at y.pl line 13." stört noch. In der Dos-Box wird Kodepage 1252 verwendet, das Script ist laut Notepad++ als ANSI kodiert.

Danke
Roland
--
"Steh vorn, während du fragst;
sitzen soll, wer antwortet."
Aus "Die Edda des Snorri Sturluson" "Gylfis Täuschung" Strophe 2

View full thread Encoding, Umlaute, ...