Tk und locale

05/03/2009 - 09:18 von Oliver ojo Bedford | Report spam
Hi!

Nàchste Grundlagenfrage: wie ist eigentlich die Interaktion zwischen Tk
und der locale?

Ich möchte die Eingaben aus Entry- und Text-Widgets unbearbeitet in
Textdateien speichern.

Naiv dachte ich, wenn LANG=de_DE.UTF-8, dass dann auch utf-8 produziert
wird. Dem scheint aber nicht so zu sein.

In der Doku habe ich nichts zum Thema gefunden, was nicht heisst, dass
da nichts steht...

TIA,
Oliver
 

Lesen sie die antworten

#1 Slaven Rezic
05/03/2009 - 20:49 | Warnen spam
Oliver 'ojo' Bedford writes:

Hi!

Nàchste Grundlagenfrage: wie ist eigentlich die Interaktion zwischen Tk
und der locale?

Ich möchte die Eingaben aus Entry- und Text-Widgets unbearbeitet in
Textdateien speichern.

Naiv dachte ich, wenn LANG=de_DE.UTF-8, dass dann auch utf-8 produziert
wird. Dem scheint aber nicht so zu sein.



Die Locale ist hier nicht relevant. Tk arbeitet wie der Rest von Perl
mit "Characters" (im Gegensatz zu "Octets", siehe Encode-Manpage). Wenn
du deine Daten in einem bestimmten Encoding abspeichern willst, dann
musst du das Encoding explizit angeben, z.B. mit einem entsprechenden
binmode()-Aufruf oder mit der Angabe eines PerlIO-Layers beim
open()-Befehl oder indem man manuell encode() aufruft.

Beispiel:

#!perl
use Tk;
$top = tkinit;
$top->Entry(-textvariable => \$data)->pack;
$top->Button(-text => "Speichern",
-command => sub {
open my $fh, ">:utf8", "data" or die $!;
print $fh $data;
})->pack;
MainLoop;
__END__

Gruß,
Slaven

Slaven Rezic - slaven <at> rezic <dot> de

Visualize Makefiles with GraphViz:
http://user.cs.tu-berlin.de/~eserte/src/perl/GraphViz-Makefile/

Ähnliche fragen