Seite 1 von 1

Umlaute aus Datenbank in HTML

Verfasst: Dienstag 5. Mai 2009, 09:04
von C4S3
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!

Verfasst: Dienstag 5. Mai 2009, 09:15
von frabron
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'ä'

Verfasst: Dienstag 5. Mai 2009, 09:32
von C4S3
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!

Verfasst: Dienstag 5. Mai 2009, 09:36
von Leonidas
Ergo: Content-Type richtig setzen.