Frage

Ich habe eine PostgreSQL \ PostGIS räumliche Datenbank, die hebräischen Textspalten enthält. Das System läuft auf Ubuntu, und alles funktioniert einwandfrei mit UTF-8.

Ich versuche, einige Tabellen in Shape-Datei für ein Windows-Programm-Dump, die nur von Windows-1255-Strings lesen können. Leider pgsql2shp hat keine Codierung Option, obwohl shp2pgsql hat, so dass das Widnows Programm liest UTF-8 analysiert, wie Windows-1255 geben Gibberish.

Ich habe versucht, einen Windows-1255 im Hinblick auf die Tabellenspalten zu schaffen, fand aber keinen Weg, es zu tun, ohne die Datenbank korrumpiert.

Irgendwelche Ideen, wie man die Tabellen konvertieren?

Danke,

Adam

UPDATE:

dachte ich, das eine gelöst wurde (meine eigene Antwort sehen), indem ich immer noch zufällige Fehler wie:

ERROR:  character 0x9f of encoding "WIN1255" has no equivalent in "UTF8"

Was ich will, ist eine Art auslassen Funktionalität: wie iconv 's -c Flagge, die einfach nicht Quellzeichen kopiert, die keine Entsprechung haben int Zielcodierung.

War es hilfreich?

Lösung

Wenn Sie wirklich ASCII bedeuten, können Sie nicht möglicherweise hebräischen Zeichen retten. ASCII ist nur die 7-Bit-Zeichen \x7F einzurichten.

Also, welche Art von Strings ist dieses Windows-Programm lesen? Wenn es ASCII ist, oder Latin-1, werden Sie nie Hebräisch bekommen. Wahrscheinlicher ist es „die aktuelle System-Codepage“, auch (misleadingly aber häufig) in Windows als ‚ANSI‘ bekannt.

Wenn das der Fall ist werden Sie die System-Codepage auf jeder Maschine einstellen müssen, dass das Windows-Programm auf Hebräisch läuft (Codepage 1255). Ich glaube, dass SHP-Dateien überhaupt keine Zeichencodierung Informationen haben, so die Shape-Dateien werden immer nur korrekt auf Maschinen mit dieser Codepage Satz (den Standard nur in dem Israel locale) arbeiten. (Offenbar .dbf Exporte kann eine begleitende .cpg Datei müssen die Codierung angeben, aber ich habe keine Ahnung, ob das Programm, das Sie unterstützt verwenden, das).

Dann würden Sie die Daten als Codepage 1255 exportieren müssen, oder die nächstgelegene Sie gehen in Postgres, ISO-8859-8 zu bekommen. Da das Exportskript jede Option nicht zu haben scheint, alles zu tun, sondern direkt Bytes aus der Datenbank übernehmen, dann würden Sie eine Datenbank in der ISO-8859-8-Codierung erstellen müssen und übertragen alle Daten aus der UTF-8-Datenbank zur 8859-8 ein, entweder direkt durch Abfragen oder vielleicht einfacher, pgdumpall verwenden und die SQL in dem Editor dann erneut Speicher als Hebräisch statt UTF-8 (Anpassung keiner Kodierungseinstellungen aufgelistet in SQL DDL as you go) zu laden.

Ich frage mich, ob die Macher des Windows-Programms überzeugt werden können, UTF-8 zu unterstützen? Es ist ein bisschen traurig, in diesem Jahrhundert mit Code-Seite spezifischer Software geklebt werden.

Andere Tipps

Aus dem Bash-Skript:

select ENCODING in UTF8 WIN1252 WIN1255 ISO-8859-8;
do
        if [[ -n $ENCODING ]]; then
                export PGCLIENTENCODING=$ENCODING;
                break
        else
                echo 'Invalid encoding.'
        fi
done

Die export PGCLIENTENCODING=$ENCODING; Anweisung funktioniert der Trick.

Überprüfen Hebräisch Codierungstabellen und Seitentabellen, können Sie diese ISO-8859-8 und Windows-1255 keine Zuordnung für 0x9f haben.

Die Daten, die Sie konvertieren möchten auf dem älteren basieren könnte Codepage 862 , eine Codepage für Hebräisch unter DOS. Codepage 862 ordnet den Code 0x9f auf den Unicode-Zeichen "Kleiner lateinischer Buchstabe F mit Haken", 0x0192.

Sie können ähnlich „random“ Fehler untersuchen und auf Zuordnung für den Nicht-Windows-1255-Codes in den Daten entscheiden.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top