Hallo leutz,
ich hab ein Problem und zwar wenn ich eine QTextLine.text() element auslese bekomme
ich die Umlaute nicht beziehungsweise falsch angezeigt .
Wo oder wie kann ich das umwandeln, ich denke ich sollte vom bytestring in unicode versuchen oder?
Gruss
stockie
Umlaut Problem bei QTextLine
@stockie: Nun, Qt-Widgets geben durchweg echte Zeichenketten zurück, welche Du zur Ausgabe ggf. in Bytestrings umwandeln musst (und nicht umgekehrt!). Das ist alles, was man so ohne weiteres dazu sagen kann. Wir können schließlich nicht hellsehen.
Zeige also bitte Quelltext und nenne Deine Python-Version. "QTextLine.text()" gibt es im Übrigen nicht. Ich nehme an, Du sprichst von "QLineEdit.text()". Bitte stelle präzise und korrekte Fragen, nur so können wir Dir präzise und korrekte Antworten geben.
Zeige also bitte Quelltext und nenne Deine Python-Version. "QTextLine.text()" gibt es im Übrigen nicht. Ich nehme an, Du sprichst von "QLineEdit.text()". Bitte stelle präzise und korrekte Fragen, nur so können wir Dir präzise und korrekte Antworten geben.
Hallo also,
stimmt, es ist umgekehrt mit Funktion unicode kann ich den Bytestrings in unicode umwandeln hier nun der Code:
print "feld1 " + unicode(self.BinderName.text())
print "feld2 " + binderdat.toString('yyyy-mm-dd')
print "feld3 " + expirydat.toString('yyyy-mm-dd')
wenn ich aber die felder zusammenbau dann geht es nicht
sql="insert into binder(bindername,binder_dat,expiry)values("
sql=sql+"'"+unicode(self.BinderName.text())+"','"+binderdat.toString('yyyy-mm-dd')+"','"+expirydat.toString('yyyy-mm-dd')+"')"
stimmt, es ist umgekehrt mit Funktion unicode kann ich den Bytestrings in unicode umwandeln hier nun der Code:
print "feld1 " + unicode(self.BinderName.text())
print "feld2 " + binderdat.toString('yyyy-mm-dd')
print "feld3 " + expirydat.toString('yyyy-mm-dd')
wenn ich aber die felder zusammenbau dann geht es nicht
sql="insert into binder(bindername,binder_dat,expiry)values("
sql=sql+"'"+unicode(self.BinderName.text())+"','"+binderdat.toString('yyyy-mm-dd')+"','"+expirydat.toString('yyyy-mm-dd')+"')"
@stockie: Du bekommst hier wahrscheinlich Probleme weil ein ``+`` zwischen Zeichenkette (`str`) und Unicode-Objekt (`unicode`) ein Unicode-Objekt ergibt.
Aber davon ganz abgesehen baut man solches SQL nicht als Zeichenkette selber zusammen, weil das eine Sicherheitslücke ist. Dafür benutzt man parametrisiertes SQL und das zweite Argument der `execute()`-Methode wo dann die Argumente übergeben werden. Für das Einsetzen in die Anfrage ist das Datenbankmodul zuständig. Das sorgt zum einen dafür, dass das *sicher* ist, und bei einigen Datenbanken kann es auch effizienter sein, wenn die selbe SQL-Anweisung einfach nur mit unterschiedlichen Werten mehrfach ausgeführt wird.
Qt hat darüber hinaus auch eine eigene Datanbankabstraktion. Eventuell ist die auch etwas für Dich.
Aber davon ganz abgesehen baut man solches SQL nicht als Zeichenkette selber zusammen, weil das eine Sicherheitslücke ist. Dafür benutzt man parametrisiertes SQL und das zweite Argument der `execute()`-Methode wo dann die Argumente übergeben werden. Für das Einsetzen in die Anfrage ist das Datenbankmodul zuständig. Das sorgt zum einen dafür, dass das *sicher* ist, und bei einigen Datenbanken kann es auch effizienter sein, wenn die selbe SQL-Anweisung einfach nur mit unterschiedlichen Werten mehrfach ausgeführt wird.
Qt hat darüber hinaus auch eine eigene Datanbankabstraktion. Eventuell ist die auch etwas für Dich.
Vielen Dank für den Tip, das komische ist das bei meinem Computer läuft das ganze ohne Probleme und wenn ich das ganze dann mit pyinstaller packe
und auf einen anderen PC packe bricht er bei dieser Stelle(Zeichenkette) ab.
und auf einen anderen PC packe bricht er bei dieser Stelle(Zeichenkette) ab.