Sonderzeichen -> Umlaute

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
tco95ttocs
User
Beiträge: 18
Registriert: Mittwoch 1. April 2009, 15:52

Hi
hab nen Shapefile mit mehreren Attributspalten, darunter 2 mit Namen. In diesem Shapefile ist es irgendwann mal passiert, dass die Umlaute zu Sonderzeichen wurden, sprich

ö = "
ä = " (aber unten)
ü = ein Quadrat (k.a. welcher Code das erstellt!)
ß = á

Wie bekomm ich am besten aus den Sonderzeichen wieder Umlaute hin?
Andyh
User
Beiträge: 319
Registriert: Dienstag 8. Januar 2008, 19:52
Kontaktdaten:

Hallo

Also mir würde da spontan "replace" einfallen

Code: Alles auswählen

text= 'er l"uft'
print text.replace('"', "ä")
Gruß
Andyh
Meinen Dickschädel schon bemerkt?
Ich bin jetzt FACHARBEITER (Zerspanungsmechaniker)!!!
[code]import sys

if sys.platform == "win32":
print "this program only runs on operating systems!!!"
sys.TotalError()[/code]
tco95ttocs
User
Beiträge: 18
Registriert: Mittwoch 1. April 2009, 15:52

joa klingt logisch, allerdings muss ich ja zudem noch zwischen dem hochgestellten " und dem runtergestellten " unterscheiden, nur hab ich bis jetzt noch keinen befehl gefunden der das macht!

ach kann ich ja einfach mit Copy&paste machen :)

Code: Alles auswählen

string="”á„"
print string.replace('”', 'ö').replace('„','ä').replace('á','ß')
so wie oben funktioniert es fürs ä, ö und ß, wenn ich nun aber das "Quadrat" einfügen will

Code: Alles auswählen

string="”á„
frabron
User
Beiträge: 306
Registriert: Dienstag 31. März 2009, 14:36

Shapefiles sind oft in ISO-8859-1 kodiert. In welcher Kodierung sind denn deine? Wie greifst du denn auf das DBF zu? Vielleicht benutzt du unterschiedliche Kodierungen, oder liest die Attribute im falschen Format ein?!

Gruß
Frank
BlackJack

Der "Mist" ist vielleicht das was Du willst, vielleicht aber auch nicht. Das kann man nicht wissen solange man a) nicht weiss was Du willst und b) die Bytewerte nicht kennt, sondern nur dass was Du von irgendwoher hier per kopieren und einfügen zeigst.

Das sieht nach UTF-8 aus, was fälschlicherweise als cp1252 dekodiert wurde. Du musst Dich halt mal mit Bytewerten und Kodierungen auseinandersetzen.
tco95ttocs
User
Beiträge: 18
Registriert: Mittwoch 1. April 2009, 15:52

das problem ist einfach, dass ich nicht weis, was besagtes shapefile für ne Codierung aufweist, haben es so bereits geliefert bekommen, mit sicherheit ist da irgendwann mal was beim konvertieren schief gelaufen...

ich bastel dann mal ne schleife mit men cursor, sodass ich direkt auf die attribute zugreifen kann und da werd ich ma guggen, was da python so ausliest. Aber erstmal muss ich was für Groß und kleinschreibung schreiben, hab da auch ein shape, wo alles Groß geschrieben ist...
frabron
User
Beiträge: 306
Registriert: Dienstag 31. März 2009, 14:36

Du kannst versuchen, mit der OO Tabellenkalkulation die DBF zu öffnen. Normalerweise fragt OO nach der Kodierung. Einfach probieren, bis die Datei richtig eingelesen wird.

Das hier könnte dir auch helfen, die Codepage auszulesen. So wie es scheint, steht die Codepage im Byte 29 der Kopfzeile vom DBF
http://trac.osgeo.org/gdal/ticket/2864
Benutzeravatar
b.esser-wisser
User
Beiträge: 272
Registriert: Freitag 20. Februar 2009, 14:21
Wohnort: Bundeshauptstadt B.

Mal im Namen aller, die keine Ahnung haben was ein Shapefile sein könnte:
Was ist ein Shapefile (XML, Text, CSV, binär, etc.)?

Wenn du das weißt, musst du es nur noch 'korrekt' öffnen (wobei das csv Modul nicht mit Unicode umgehen kann, da musst du deinen Texte anschließend str.decode()'n).

[wiki=Von Umlauten, Unicode und Encodings]Das hier[/wiki] hast du natürlich schon mal gelesen, oder?

hth, Jörg
Wir haben schon 10% vom 21. Jahrhundert hinter uns!
tco95ttocs
User
Beiträge: 18
Registriert: Mittwoch 1. April 2009, 15:52

danke für den Tip mit der Tabellenkalk. Habs grad mal in Excel geöffnet und siehe da, alles war richtig geschrieben, habs dann gleich mit Copy and Paste ins Shape-file kopiert, funktionierte 1a.
Wenn ich das neue DBF dann wieder in Excel öffne steht wieder Buchstabensalat drin, aber das is dann wurst, solang es im shp passt :)
frabron
User
Beiträge: 306
Registriert: Dienstag 31. März 2009, 14:36

Das Shapefile-Format ist ein Quasistandard zur Speicherung von Geodaten. Es besteht mindestens aus drei Dateien, mit den Endungen .shp, .shx und .dbf. In der .shp Datei stehen die Geometrien, in der .dbf die Attribute zu den Geometrien, das ist eine normale Dbase Datei, und in der .shx ist die Verknüpfung zwischen Geometrie und Attribut realisiert.

Alles binär und relativ einfach im Aufbau. Das Format wurde am Anfang der Menscheit von Amerikanern entwickelt und hat deshalb sämtliche Schwächen, die damit einhergehen. Denn die Menscheit spricht englisch und verschiedene Zeichensätze sind unnötiger Mumpitz. Man will auch nie wissen, in welchem Bezug die Geometrien zueinander stehen, und als Attribute nimmt man am besten irgendwelche Codes, damit man alles in kryptischen README's nachschlagen muss.

Frank, der Shapefiles für die Schweinegrippe der modernen Geographie hält
tco95ttocs
User
Beiträge: 18
Registriert: Mittwoch 1. April 2009, 15:52

besser hät ich das auch nicht erklären können :)
Antworten