Zeichensatz Probleme

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
de_master
User
Beiträge: 72
Registriert: Samstag 15. Januar 2005, 15:19

Hi @ all,
ich habe folgendes Problem. Ich lese eine html Datei ein und parse diese mit Beautiful Soup. Nun habe ich Probleme mit den Zeichen :(.

In der Datei habe ich # -*- coding: utf-8 -*- drin stehen.

Ich öffne die Datei mit folgendem Befehl: f = codecs.open(filepath, "r", "utf-8")

Jedoch erhalte ich folgende Fehlermeldung:
Traceback (most recent call last):
File "C:\Dokumente und Einstellungen\Michael.Strecker\Desktop\code\HTMLinex.py", line 108, in <module>
test.getContent("test.htm", "Stamm (Menue)", "TestProjekt1")
File "C:\Dokumente und Einstellungen\Michael.Strecker\Desktop\code\HTMLinex.py", line 99, in getContent
c.execute(sql)
File "C:\Python25\lib\site-packages\MySQLdb\cursors.py", line 149, in execute
query = query.encode(charset)
UnicodeEncodeError: 'latin-1' codec can't encode character u'\u2026' in position 169: ordinal not in range(256)
Was mache ich denn noch falsch?

Gruss Michael

PS: Habe diesen Artikel gelesen: http://www.python-forum.de/topic-5095.html
de_master
User
Beiträge: 72
Registriert: Samstag 15. Januar 2005, 15:19

Scheint wohl ein Datenbankproblem zu sein. Jedoch versteh ichs nicht so ganz :(.

Wär nice wenn mir jemand weiterhelfen könnte.

Gruss Michael
BlackJack

Die Datenbank will anscheinend Unicode nach 'Latin-1' kodieren um es zu speichern und in Deinen Daten ist ein Zeichen enthalten, dass sich nicht in 'Latin-1' darstellen lässt. Und zwar die "Auslassungspunkte":

Code: Alles auswählen

In [25]: unicodedata.name(u'\u2026')
Out[25]: 'HORIZONTAL ELLIPSIS'

In [26]: print u'\u2026'
…
de_master
User
Beiträge: 72
Registriert: Samstag 15. Januar 2005, 15:19

BlackJack hat geschrieben:Die Datenbank will anscheinend Unicode nach 'Latin-1' kodieren um es zu speichern und in Deinen Daten ist ein Zeichen enthalten, dass sich nicht in 'Latin-1' darstellen lässt. Und zwar die "Auslassungspunkte":

Code: Alles auswählen

In [25]: unicodedata.name(u'\u2026')
Out[25]: 'HORIZONTAL ELLIPSIS'

In [26]: print u'\u2026'
…
Gibts die möglichkeit das der das trotzdem speichert? Mein Dokument ist an die 100 MB groß. Das alles durchzusuchen wird schwer :(.
Benutzeravatar
jens
Python-Forum Veteran
Beiträge: 8502
Registriert: Dienstag 10. August 2004, 09:40
Wohnort: duisburg
Kontaktdaten:

Benutzte nicht latin-1 beim MySQL Server, sondern UTF-8... Müste IMHO ab MySQL v4.1 gehen.

Das kann man auch mit MySQLdb umstellen.
Nimm die neuste Version von MySQLdb, denn da hat sich zwischenzeitlich was geändert. Siehe:
http://www.python-forum.de/topic-8002.html
oder
http://www.python-forum.de/topic-9425.html

GitHub | Open HUB | Xing | Linked in
Bitcoins to: 1JEgSQepxGjdprNedC9tXQWLpS424AL8cd
de_master
User
Beiträge: 72
Registriert: Samstag 15. Januar 2005, 15:19

Aktuelle Version 1.2.2 (MySQL-python-1.2.2.win32-py2.5.exe) habe ich installiert, jedoch die selbe Fehlermeldung.

Das Datenbankfeld habe ich als Typ "TEXT" mit der Kollation von "utf8_general_ci" gestellt. Ist das denn so richtig?

An was könnte es denn noch liegen?

Gruss Michael
Andy
User
Beiträge: 196
Registriert: Sonntag 1. Januar 2006, 20:12
Wohnort: aus dem hohen Norden....

Nicht verzagen, Wikipedia fragen: Auslassungspunkte#Darstellung_in_Computersystemen_und_Ersetzung :wink:

Gruss Andy
BlackJack

Das wird aber nicht allgemein helfen. Es können ja auch beliebige andere Zeichen vorkommen, die nicht mit 'latin-1' darstellbar sind.
Benutzeravatar
jens
Python-Forum Veteran
Beiträge: 8502
Registriert: Dienstag 10. August 2004, 09:40
Wohnort: duisburg
Kontaktdaten:

de_master hat geschrieben:An was könnte es denn noch liegen?
Du must beim connect auch sagen, das du UTF8 möchtest...

django macht es so: http://code.djangoproject.com/browser/d ... ql/base.py
beim connect werden die Parameter use_unicode=False und charset="utf8" mitgegeben. Geht aber wohl erst ab MySQLdb-1.2.1p2
Siehe auch http://www.python-forum.de/post-58386.html#58386

GitHub | Open HUB | Xing | Linked in
Bitcoins to: 1JEgSQepxGjdprNedC9tXQWLpS424AL8cd
Antworten