Hallo zusammen
erst mal besten Dank für die Antworten, ich seh schon, ich muss mal zurück zum Start und mich echt mal mit diesen Kodierungen herumschlagen. Das mit dem Testscript ist wohl auch in meiner "Verzweiflung" entstanden... logisch dass hier nichts geht, weil ich die Variabel ja gar nicht veränder...
@Sirius3, beim aktuellen Fall sieht der Codeabschnitt so aus:
Code: Alles auswählen
@app.route('/show/all/')
@login_required
def show_all():
g.db = connect_db()
cur = g.db.execute('select patton_id, hostname, syslocation, ipaddress, \
last_change from patton')
patton_configs = [dict(hostname=row[1], syslocation=row[2],
ipaddress=socket.inet_ntoa(struct.pack('!L', row[3])),
last_change=unix2time(row[4]), patton_id=row[0])
for row in cur.fetchall()]
for config in patton_configs:
if len(config['syslocation']) > 60:
config['syslocation'] = config['syslocation'][:60] + '...'
print config['syslocation']
else:
print config['syslocation']
g.db.close()
return render_template('show_all.html', patton_configs=patton_configs)
Nach meinem heutigen Verständnis hole ich alle Records aus der DB und liste diese entsprechend auf. Mit einer kleinen if-Schleife kontrolliere ich die Länge von syslocation und trimme entsprechend. Ein Datensatz hat ein ä in der Syslocation weshalb flask mit der Meldung "UnicodeEncodeError: 'ascii' codec can't encode character u'\xf6' ...." - wenn ich das nun richtig interpretiere geht Python von ASCII aus und kann darum nichts damit anfangen.
Wie und wo deklariere ich am besten um welchen Datentyp es sich handelt? Weil sinnigerweise wäre ja (oder irre ich mich) Unicode überall zu verwenden, zumal dort wo ich Adressen, Namen oder sonstiges habe, wo alles mögliche an Zeichen auftretten kann.