Umlaute aus Datenbank in HTML

Wenn du dir nicht sicher bist, in welchem der anderen Foren du die Frage stellen sollst, dann bist du hier im Forum für allgemeine Fragen sicher richtig.
Antworten
Benutzeravatar
C4S3
User
Beiträge: 292
Registriert: Donnerstag 21. September 2006, 10:07
Wohnort: Oberösterreich

Hallo!

Ich bin gerade dabei im Büro ein paar kleine Sachen zu schreiben, die uns den Alltag ein wenig erleichtern sollen.
Dazu gehört auch, aus einer Datenbank Projektdaten zu holen und in unserem Intranet verfügbar zu machen.

(Da ich nicht weiß, ob mein Problem denn nun mit der Datenbank oder dem Webserver zu tun hat, habe ich die Frage hier gepostet. @Admin/Mod: eventuell bitte verschieben, danke!)

Kurz zur Konfiguration
Betriebssystem: Windows Server 2003 R2 Standard Edition
Datenbank: MS SQL Server 2005
Webserver: Apache/2.0.55 (Win32)
Python 2.5.4 + PyODBC-2.1.5

Ich habe die Scripte mit SciTE geschrieben, das Encoding in SciTE auf UTF-8 gestellt und auch die Zeile im Script mit

Code: Alles auswählen

# coding: utf-8
definiert.
Somit hatte ich bisher keine Probleme mit Umlauten in Kommentaren oder Docstrings. Da die Scripte alle von Apache als CGI-Scripte gestartet werden (was bisher 1a funktioniert), gebe ich viele Texte, die "hardcoded" sind, gleich in HTML-Formatierung aus.
Etwa ä = ä usw.

Mein Problem ist nun folgendes:
Ich bekomme aus der Datenbank Projektnamen zurück, die Umlaute enthalten und möchte die natürlich korrekt ausgeben.
Über einige

Code: Alles auswählen

print type(columntype)
konnte ich schon herausfinden, dass ich Unicode-Objekte zurückbekomme. Wenn ich diese auf der Konsole (durch SciTE gestartet), oder über den Webserver ausgebe, bekomme ich aber wirklich äußerst seltsame Zeichen:

ö für ä
ä für ö
usw.

Ich habe jetzt mit meinem Wissen versucht (columntype.replace('ö', 'ä')), diese sonderbaren Zeichen mit HTML-Notationen zu ersetzen, aber das hat nicht funktioniert.

Hat jemand einen Tip, Wo und wie ich ansetzen muss, dass ich die Ausgabe korrekt hinbekomme? Danke!
Gruß!
frabron
User
Beiträge: 306
Registriert: Dienstag 31. März 2009, 14:36

Wenn du deine HTML Seite auch in UTF-8 auslieferst, brauchst du kein ä
http://de.selfhtml.org/html/kopfdaten/m ... nkodierung

Vermutlich weiss dein Browser nicht, wie er die Seite, die du lieferst, interpretieren soll und wendet irgendeine Kodierung an ...

Bedenke auch, dass du bei der Ausgabe von Unicode Strings Python mitteilst, dass da Unicode kommt ...

Code: Alles auswählen

print u'ä'
Benutzeravatar
C4S3
User
Beiträge: 292
Registriert: Donnerstag 21. September 2006, 10:07
Wohnort: Oberösterreich

frabron hat geschrieben:Bedenke auch, dass du bei der Ausgabe von Unicode Strings Python mitteilst, dass da Unicode kommt ...

Code: Alles auswählen

print u'ä'
Ich weiß jetzt nicht, wie ich das mit dem Objekt aus der DB anwende, aber...
frabron hat geschrieben:Vermutlich weiss dein Browser nicht, wie er die Seite, die du lieferst, interpretieren soll und wendet irgendeine Kodierung an ...
Das war es auch!
frabron hat geschrieben:
BeitragVerfasst am: Di Mai 05, 2009 10:15 Titel:
Wenn du deine HTML Seite auch in UTF-8 auslieferst, brauchst du kein ä
http://de.selfhtml.org/html/kopfdaten/m ... nkodierung
Jetzt funktioniert es, danke!
Gruß!
Leonidas
Python-Forum Veteran
Beiträge: 16025
Registriert: Freitag 20. Juni 2003, 16:30
Kontaktdaten:

Ergo: Content-Type richtig setzen.
My god, it's full of CARs! | Leonidasvoice vs (former) Modvoice
Antworten