UTF-8 Datei als Latin-1 öffnen?

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
root_tux_linux
User
Beiträge: 36
Registriert: Sonntag 16. Dezember 2007, 04:18

Dienstag 22. April 2008, 01:42

Hi

Hab ein kleines Problem.

Ich hab ein kleines Test-Script (nix spezielles) geschrieben das eine Datei öffnet, den Inhalt der Datei dann Zeile für Zeile liest.

Mein Problem ist nun das mein System und die Datei UTF-8 sind und das der Text der Datei jedoch auf einer Seite angezeigt werden soll die ISO-8859-1 bzw Latin-1 nutzt. Deshalb werden die Umlaute nicht korrekt angezeigt.

Nun hab ich versucht mittels codecs.open(file, 'r', 'latin-1') den Inhalt direkt in Latin-1 zu wandeln was jedoch nicht klappte, genau so wenig wie den Inhalt zu lesen und dann mittels unicode(inhalt, 'latin-1').

Gibt es irgendeine Möglichkeit Text der als UTF-8 gespeichert wurde in Latin-1 umzuwandeln damit dieser Text korrekt angezeigt wird auf einer Internetseite die Latin-1 nutzt?


PS. Ablegen der Datei auf dem Server will ich nicht, da ich diese auf dem Desktop bearbeiten will. :)
AMD Athlon 64 X2 6000+, ASUS M2N-SLI Deluxe, ASUS EN8600GTS Silent, 4GB Apacer DDR2 800Mhz | Gentoo Linux x86_64
AMD Sempron 2500+, MSI KT4, ASUS N6200, 2x 512MB Apacher DDR 400Mhz, Hauppauge PVR150 | Arch Linux i686
### Sorry for my bad english ###
Benutzeravatar
gerold
Python-Forum Veteran
Beiträge: 5554
Registriert: Samstag 28. Februar 2004, 22:04
Wohnort: Telfs (Tirol)
Kontaktdaten:

Dienstag 22. April 2008, 07:54

root_tux_linux hat geschrieben:Nun hab ich versucht mittels codecs.open(file, 'r', 'latin-1') den Inhalt direkt in Latin-1 zu wandeln
Hallo root_tux_linux!

``codecs.open`` öffnet den Text und wandelt diesen beim Auslesen nach Unicode um. Um das bewerkstelligen zu können, muss man beim Öffnen der Textdatei angeben, in welcher Codierung der Text vorliegt. Du hast es also nur verkehrt herum gemacht.

Du kannst aber auch auf ``codecs`` verzichten, die Datei normal öffnen und zeilenweise umwandeln. Dann werden auch die Zeilenendzeichen automatisch konvertiert. Denn ``codecs.open`` öffnet die Datei immer "binär".

Code: Alles auswählen

my_file = file("<dateiname>", "rU")
for utf8_line in my_file:
    iso_line = utf8_line.decode("utf-8").encode("ISO-8859-1")
Nähere Infos findest du hier:
http://www.python-forum.de/topic-5095.html

mfg
Gerold
:-)
[url]http://halvar.at[/url] | [url=http://halvar.at/elektronik/kleiner_bascom_avr_kurs/]Kleiner Bascom AVR Kurs[/url]
Wissen hat eine wunderbare Eigenschaft: Es verdoppelt sich, wenn man es teilt.
root_tux_linux
User
Beiträge: 36
Registriert: Sonntag 16. Dezember 2007, 04:18

Dienstag 22. April 2008, 14:02

Danke :)

Werd ich gleich probieren ;)
AMD Athlon 64 X2 6000+, ASUS M2N-SLI Deluxe, ASUS EN8600GTS Silent, 4GB Apacer DDR2 800Mhz | Gentoo Linux x86_64
AMD Sempron 2500+, MSI KT4, ASUS N6200, 2x 512MB Apacher DDR 400Mhz, Hauppauge PVR150 | Arch Linux i686
### Sorry for my bad english ###
Benutzeravatar
mkesper
User
Beiträge: 919
Registriert: Montag 20. November 2006, 15:48
Wohnort: formerly known as mkallas
Kontaktdaten:

Dienstag 22. April 2008, 18:51

Das Ganze funktioniert prinzipiell nicht mehr, sobald im Ursprungstext Zeichen außerhalb von Latin-1 drin sind.
Antworten