Schrift
[thread]5035[/thread]

Entry macht Umlaute zu Hex???



<< |< 1 2 >| >> 20 Einträge, 2 Seiten
Gast Gast
 2005-07-20 16:51
#44212 #44212
Hab das Problem in meinem Progie festgestellt. Dies hier zu beschreiben wäre aber zu umständlich deshalb hab ich mir das srcipt von hier

www.duehl.de

geholt und es etwas modifiziert.
Code: (dl )
1
2
3
4
5
6
7
8
9
10
11
12
13
14
use Tk;
use Data::Dumper;

$mw = new MainWindow;

foreach (qw/Vorname Nachname Strasse PLZ Ort/) {
$mw->Label(-text => $_)->pack();
$mw->Entry(-textvariable => \$results{$_})->pack();
}
$mw->Button(-text => "Ok",
-command => sub { print Dumper %results})->pack();
$mw->Button(-text => "Exit", -command => sub { exit } )->pack();

MainLoop();


Wieso Zeigt der Dumper bei Umlauten Hex an. Und wie bekomme ich das weg???

Wenn man die Werte normal mit print ausgibt, sieht man das Problem garnicht. Wenn ich es aber in eine mysql schreiben will schon.
Crian
 2005-07-20 17:04
#44213 #44213
User since
2003-08-04
5866 Artikel
ModeratorIn
[Homepage]
user image
Dann hast Du ein Zeichensatz bzw. Codierungsproblem.

Wo Du meine Seite schon gefunden hast, kannst Du da mal nach den encoding-Snippets schauen.

Welchen Zeichensatz musst Du denn für die Datenbank verwenden? Ich dachte immer, sowas wäre der Datenbank egal.

Normalerweise wird in der DOS-Box/cmd (Windows) Zeichensalat angezeigt, schreibt man die Daten aber in eine Datei und schaut sie sich dann mit einem Editor an, sind die Umlaute richtig.\n\n

<!--EDIT|Crian|1121864707-->
s--Pevna-;s.([a-z]).chr((ord($1)-84)%26+97).gee; s^([A-Z])^chr((ord($1)-52)%26+65)^gee;print;

use strict; use warnings; Link zu meiner Perlseite
renee
 2005-07-20 17:05
#44214 #44214
User since
2003-08-04
14371 Artikel
ModeratorIn
[Homepage] [default_avatar]
Ich kann das Problem nicht nachvollziehen. Bei mir funktioniert das einwandfrei...

Welches OS? Welches Perl? Welches Tk?
OTRS-Erweiterungen (http://feature-addons.de/)
Frankfurt Perlmongers (http://frankfurt.pm/)
--

Unterlagen OTRS-Workshop 2012: http://otrs.perl-services.de/workshop.html
Perl-Entwicklung: http://perl-services.de/
Gast Gast
 2005-07-20 17:17
#44215 #44215
Windows
Perl 5.8
tk inkl.

@Crian: Ich hatte auch noch nie Probleme mit den insert's funze bis heute alles. Deine Snippets kuck ich mir jetzt gleich noch an.
Crian
 2005-07-20 17:20
#44216 #44216
User since
2003-08-04
5866 Artikel
ModeratorIn
[Homepage]
user image
Ich vermute aber, dass es sich dann nur um ein Anzeigeproblem in der Dosbox handelt.
s--Pevna-;s.([a-z]).chr((ord($1)-84)%26+97).gee; s^([A-Z])^chr((ord($1)-52)%26+65)^gee;print;

use strict; use warnings; Link zu meiner Perlseite
esskar
 2005-07-20 17:32
#44217 #44217
User since
2003-08-04
7321 Artikel
ModeratorIn

user image
Code: (dl )
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
use Tk;
use Data::Dumper;

$mw = new MainWindow;

foreach (qw/Vorname Nachname Strasse PLZ Ort/) {
$mw->Label(-text => $_)->pack();
$mw->Entry(-textvariable => \$results{$_})->pack();
}
$mw->Button(-text => "Ok",
-command => sub {
foreach (keys %results) {
print "$_: $results{$_}\n"
}
})->pack();
$mw->Button(-text => "Exit", -command => sub { exit } )->pack();

MainLoop();


Tk benutzt Windows-Codepage (1251, oder so) => ungleich DOS
Gast Gast
 2005-07-20 17:58
#44218 #44218
Ok wenn das so ist wie bekomme ich das weg?

Wer es nicht glaubt, hab das script noch etwas angepasst. Datenbankdaten müssten halt noch angepasst werden.
Code: (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
use Tk;
use DBI;
use Data::Dumper;

$mw = new MainWindow;
my $host='127.0.0.1';
my $user = 'joe';
my $passwd = '';
my $db = 'test_bank';

foreach (qw/Vorname/) {
$mw->Label(-text => $_)->pack();
$mw->Entry(-textvariable => \$results{$_})->pack();
}
$mw->Button(-text => "Ok",
-command => sub {

print Dumper %results;

print $results{Vorname};
$dbh = DBI->connect("DBI:mysql:database=$db;host=$host", $user, $passwd, {'RaiseError' => 1}) or die 'Fehler beim Verbinden!';
$sth = $dbh->prepare(qq[INSERT INTO inhalt ( `id` , `name` ) VALUES ('', '$results{Vorname}')]);



$sth->execute;
} )->pack();
$mw->Button(-text => "Exit", -command => sub { exit } )->pack();

MainLoop();


Dump

CREATE TABLE `inhalt` (
`id` int(11) NOT NULL auto_increment,
`name` text NOT NULL,
PRIMARY KEY (`id`)
) TYPE=MyISAM AUTO_INCREMENT=1 ;

Ich sitzt jetzt schon 4 Stunden an dem Problem und komm einfach nicht weiter..
ptk
 2005-07-20 21:33
#44219 #44219
User since
2003-11-28
3645 Artikel
ModeratorIn
[default_avatar]
[quote=esskar,20.07.2005, 15:32]Tk benutzt Windows-Codepage (1251, oder so) => ungleich DOS[/quote]
Tk804 benutzt Unicode. Tk800 benutzt Latin1 oder so.
ptk
 2005-07-20 21:35
#44220 #44220
User since
2003-11-28
3645 Artikel
ModeratorIn
[default_avatar]
[quote=joerich,20.07.2005, 14:51]Wieso Zeigt der Dumper bei Umlauten Hex an. Und wie bekomme ich das weg???
[/quote]Das muss nicht falsch sein. Mit bestimmten Optionen zeigt Data::Dumper bei allen Nicht-ASCII-Zeichen (z.B. Umlauten) die entsprechende Hex-Notation an.
Quote
Wenn man die Werte normal mit print ausgibt, sieht man das Problem garnicht. Wenn ich es aber in eine mysql schreiben will schon.

U.U. kommt mysql mit utf-8-Werten nicht klar. Dann muss man selbst Hand anlegen und aus Characters Octets machen. Siehe auch die Manpages zu perlunicode und Encode.
Gast Gast
 2005-07-21 15:49
#44221 #44221
also ich komm hier immer noch nicht weiter. habe jetzt das noch ausprobiert
Code: (dl )
1
2
use Encode qw(from_to);
from_to($string, "utf8", "cp1250");


das macht mir jetzt schon mal aus Jörich->J?rich. Das "?" ist glaub ich von der englichen Tastatur. Kann mir da jemand weiterhelfen. Ich verstehe das zwar trotzdem nicht warum ich das (wenn es denn so gehen sollte irgenwann) so umständlich machen muss, aber es musss ja....
<< |< 1 2 >| >> 20 Einträge, 2 Seiten



View all threads created 2005-07-20 16:51.