Deutsch

How To: Lesen und Schreiben von Shapefile- und dBASE-Dateien, die in verschiedenen Codepages codiert sind

Zusammenfassung

Esri hat in ArcGIS for Desktop (ArcMap, ArcCatalog und ArcToolbox) eine Funktionalität zur Codepage-Konvertierung implementiert, mit deren Hilfe diese Desktop-Anwendungen Shapefile- und dBASE-Dateien, codiert in verschiedenen Codepages, lesen und schreiben können. Die Funktionalität zur Codepage-Konvertierung für dBASE-Dateien (dbfDefault) wird durch Angabe des Wertes einer Codepage in der Systemregistrierung aktiviert. Dies ähnelt sehr der Funktion &CODEPAGE, die in ArcInfo Workstation verwendet wird.

Vor ArcGIS 10.2.1 können die folgenden Prozeduren verwendet werden, um das gewünschte Verhalten in Bezug auf Codepages festzulegen. Wenn ArcGIS for Desktop 10.2.1 oder 10.2.2 installiert wurde, dann laden Sie die im Knowledge-Base-Artikel 42646 beschriebenen Patches herunter und installieren Sie sie, bevor Sie die folgenden Prozeduren ausführen.

Hinweis:
Im Header jeder Shapefile (.DBF) ist eine Referenz auf eine Codepage enthalten. Vor ArcGIS 10.2.1 entspricht die verwendete Codepage dem Gebietsschema des Benutzers. Wenn zum Beispiel beim Benutzer ein japanisches Gebietsschema eingestellt ist, wird in der DBF-Datei die Codepage "Shft-JIS" verwendet.

In ArcGIS 10.2.1 wird standardmäßig die Codepage UTF-8 (UNICODE) in der Shapefile (.DBF) festgelegt. Dies entspricht den aktuellen Internationalisierungsregeln und sollte sicherstellen, dass die Daten lesbar sind.

FAQs

Was bewirkt die Einstellung dbfDefault?

Durch Festlegung des Wertes einer Codepage in der Systemregistrierung können Benutzer Shapefile- und dBASE-Dateien, die in dieser Codepage codiert sind, lesen und schreiben. Benutzer können zum Beispiel eine Shapefile, die in OEM codiert ist, exportieren, indem für die Codepage in der Registrierung der Wert OEM festgelegt wird. Benutzer können Shapefiles und dBASE-Dateien, für die die Informationen zur Codepage nicht in der Datei gespeichert sind, auch lesen, wenn sie wissen, in welcher Codepage die Seite codiert ist.

Warum dbfDefault festlegen?
Beim Öffnen einer Shapefile- und dBASE-Datei in ArcGIS Desktop fragen Desktop-Programme die Sprachentreiber-ID (Language Driver ID, LDID) im Header einer dBASE-Datei oder eine zugehörige *.CPG-Datei ab, die jeweils zum Definieren der Codepage dienen und helfen, die Codepage der zu lesenden Datei zu bestimmen. Anhand der abgerufenen Informationen zur Codepage zeigt ArcGIS for Desktop die Zeichenfolgen entsprechend an, indem bei Bedarf eine Codepage-Konvertierung durchgeführt wird. Wenn in einer dBASE-Datei eine LDID oder eine CPG-Datei fehlt, wird unterstellt, dass die Datei in der Windows (ANSI/Mehrbyte-)Codepage codiert ist.

Wenn die Desktop-Programme eine in OEM codierte dBASE-Datei lesen, diese Datei aber keine Informationen zur Codepage oder keine LDID oder CPG-Datei enthält, werden die Zeichen nicht korrekt angezeigt. Das liegt daran, dass die Desktop-Programme, da sie die Informationen zur Codepage nicht finden, voraussetzen, dass die Datei in der ANSI-Codepage codiert ist, während sie tatsächlich in OEM codiert ist. Dadurch behandelt ArcGIS die OEM-Datei als in ANSI codierte Datei, was zur falschen Darstellung der in der Datei gespeicherten 8-Bit-Zeichen führt.

Bei den meisten Shapefiles und dBASE-Dateien sollten die Informationen zur Codepage in der Datei gespeichert sein. Da einige Programme, wie zum Beispiel Microsoft Access 2000 und Excel 2000, dBASE-Dateien in OEM codieren, die Informationen zur Codepage aber nicht in die LDID eintragen, kann ArcGIS die Dateien nicht ordnungsgemäß lesen. Um dieses Problem zu umgehen, können Benutzer die Funktionalität dbfDefault auf die entsprechende Codepage festlegen, bevor eine Datei, in der die Informationen zur Codepage fehlen, geöffnet wird.

Funktionsweise von dbfDefault
Die Einstellung dbfDefault in der Systemregistrierung definiert die Codepage, mit der eine Shapefile- und dBASE-Datei exportiert wird. Die Codepage einer Shapefile und dBASE-Datei, die in ArcGIS Desktop erstellt werden, werden in der Codepage erstellt, die durch den Wert von dbfDefault in der Systemregistrierung definiert wurde. Wenn zum Beispiel dbfDefault auf OEM festgelegt ist, werden die Shapefile- und dBASE-Dateien, die in ArcMap, ArcCatalog and ArcToolbox erstellt werden, in OEM codiert. Wenn dagegen dbfDefault auf ANSI festgelegt ist, werden die Shapefile- und dBASE-Dateien in ANSI codiert.

Davon gibt es nur eine Ausnahme: Shapefiles, die aus Coverages in ArcCatalog und ArcToolbox in anderen Sprachen als Spanisch und Arabisch exportiert werden, werden ungeachtet der Einstellung von dbfDefault in OEM codiert. Das liegt daran, dass "Coverage in Shapefile" in ArcToolbox die Funktionalität von ArcInfo Workstation verwendet. Da dies definierte Layer sind, die unter DOS ausgeführt werden, wird die Ausgabedatei immer in der OEM-Codepage oder der DOS-Codepage codiert. Shapefiles, die aus Coverages in ArcCatalog und ArcToolbox in Spanisch und Arabisch exportiert werden, werden in ANSI codiert. Shapefiles, die aus einem Coverage in ArcCatalog und ArcToolbox exportiert werden, werden (außer in Spanisch) in OEM codiert.

Dieselbe Logik gilt für Shapefile- und dBASE-Dateien, die in ArcGIS for Desktop gelesen werden. Wenn in einer Shapefile- oder dBASE-Datei eine LDID oder eine CPG-Datei fehlt, setzt ArcGIS voraus, dass die Datei in der durch dbfDefault definierten Codepage codiert werden soll. Wenn zum Beispiel dbfDefault auf OEM festgelegt ist und in einer dBASE-Datei sowohl eine LDID als auch eine CPG-Datei fehlt, setzt ArcGIS for Desktop voraus, dass die Datei in OEM codiert wird, und führt deshalb eine Codepage-Konvertierung durch, um die 8-Bit-Zeichen in ArcMap und ArcCatalog darzustellen (da diese beiden Anwendungen Windows-Programme sind, die die ANSI-Codepage zum Darstellen von Zeichenfolgen verwenden)
 
Hinweis:
Wenn Benutzer die Einstellung dbfDefault auf eine bestimmte Codepage festgelegt haben, werden alle in ArcGIS exportierten Shapefiles und dBASE-Dateien in dieser Codepage codiert. Bei allen Shapefiles und dBASE-Dateien ohne die Informationen zur Codepage wird vorausgesetzt, dass sie ebenfalls in dieser Codepage codiert sind. Deshalb muss dbfDefault auf den Standardwert (kein Wert) zurückgesetzt werden, sobald der Task abgeschlossen ist.
Mit welchen Programmen kann dbfDefault verwendet werden?
Das einzige Programm, das von der Einstellung dbfDefault betroffen ist, ist ArcGIS for Desktop. Andere Programme, wie zum Beispiel ArcInfo Workstation und ArcView 3.x, oder andere Codepage-Einstellungen, wie zum Beispiel die in ArcInfo Workstation verwendete Funktion &CODEPAGE und das in ArcView 3.x verwendete Codepage-Profil, sind nicht betroffen.

In ArcInfo Workstation:
  • ARCSHAPE mit &CODEPAGE OEM erstellt eine Shapefile in OEM
  • ARCSHAPE mit &CODEPAGE ANSI erstellt eine Shapefile in ANSI
  • INFODBASE mit &CODEPAGE OEM erstellt eine dBASE-Datei in OEM
  • INFODBASE mit &CODEPAGE ANSI erstellt eine dBASE-Datei in ANSI
In ArcView 3.x:
  • Shapefile und dBASE-Dateien werden in der ANSI-Codepage gespeichert.
Welche Datenformate sind von dbfDefault betroffen?
Die einzigen Datenformate, die durch die Einstellung dbfDefault zum Angeben der Codepage verwendet werden können, sind Shapefile- und dBASE-Dateien. Andere Datenformate, wie zum Beispiel Coverage und Personal-Geodatabase, sind von der Einstellung dbfDefault nicht betroffen.

In ArcGIS for Desktop (ungeachtet der Einstellung dbfDefault):
  • Personal-Geodatabases werden in Unicode gespeichert
  • Personal-Geodatabase-Tabellen werden in Unicode gespeichert
  • Coverages werden in der ISO-Codepage gespeichert
  • INFO-Dateien werden in der ISO-Codepage gespeichert
  • Austauschdateien werden in der ANSI-Codepage gespeichert
  • Textdateien werden in der ANSI-Codepage gespeichert

Vorgehensweise

In den folgenden Anweisungen wird beschrieben, wie der Wert von dbfDefault in der Systemregistrierung festgelegt wird. Zwei Optionen sind nachstehend aufgeführt.

Warnung:
Mit den folgenden Anweisungen werden Änderungen an entscheidenden Teilen Ihres Betriebssystems vorgenommen. Es wird empfohlen, eine Sicherung Ihres Betriebssystems und der Dateien, einschließlich der Registry, anzufertigen, bevor Sie fortfahren. Wenden Sie sich bei Bedarf an einen Fachmann für Computersysteme.

Für die Ergebnisse bei falschen Modifikationen, die mit diesen Anweisungen vorgenommen werden, kann Esri keine Garantie übernehmen. Seien Sie also bei den folgenden Schritten vorsichtig, da Sie sie auf eigene Gefahr ausführen.

Option A
  1. Fügen Sie die zwei Schlüssel 'Common' und 'CodePage' in der Systemregistrierung hinzu.
    So fügen Sie einen Schlüssel hinzu:
    1. Öffnen Sie den Registrierungs-Editor: Klicken Sie auf "Start > Ausführen", geben Sie "regedit" ein und klicken Sie auf "OK".
    2. Gehen Sie in der Registrierungsbaumstruktur (im linken Bereich des Registrierungs-Fensters) zu "My Computer\HKEY_CURRENT_USER\Software\ESRI" und klicken Sie auf den Registrierungsschlüssel "Desktop 10.x". Für Pro klicken Sie auf den Registrierungsschlüssel "Pro1.0". (Für die Versionen bis 9.3.1 gehen Sie zu 'My Computer\HKEY_CURRENT_USER\Software' und klicken auf den Registrierungsschlüssel ESRI.
    3. Fügen Sie einen neuen Schlüssel mit dem Namen 'Common' hinzu (Im Menü "Bearbeiten":
      Navigieren Sie zu "Neu", wählen Sie "Schlüssel" aus, geben Sie den Namen "Common" ein und drücken Sie die EINGABETASTE).
    4. Klicken Sie auf den soeben erstellten Registrierungsschlüssel (Common) und fügen Sie einen neuen Schlüssel mit dem Namen "CodePage" hinzu.
  2. Fügen Sie den neuen Zeichenfolgenwert "dbfDefault" zum Schlüssel CodePage hinzu.
    So fügen Sie einen neuen Zeichenfolgenwert hinzu:
    1. Klicken Sie auf den Schlüssel "CodePage".
    2. Navigieren Sie im Menü "Bearbeiten" zu "Neu" und wählen Sie "Zeichenfolgewert" aus.
    3. Geben Sie den neuen Wert "dbfDefault" ein und drücken Sie die EINGABETASTE.

      Der neue Schlüssel CodePage sollte folgendermaßen angezeigt werden:
      [O-Image] Screenshot of dbfDefault in
       
  3. Geben Sie einen Wert für Codepage ein.
    1. Wählen Sie den soeben hinzugefügten Eintrag aus. Dabei muss dbfDefault ausgewählt sein und nicht (Default).
    2. Klicken Sie im Menü "Bearbeiten" auf "Ändern".
    3. Geben Sie unter "Wert" den neuen Wert für Codepage ein und klicken Sie auf "OK".
      Die folgenden Listen enthalten die unterstützten Codepage-IDs (zwischen Groß- und Kleinschreibung wird nicht unterschieden).
  • OEM-Codepage-IDs
437 - USA
708 - Arabisch (ASMO 708)
720 - Arabisch (Transparent ASMO), Arabisch (DOS)
737 - Griechisch, Griechisch (DOS)
775 - Baltisch, Baltisch (DOS)
850 - Lateinisch mehrsprachig 1, Westeuropa (DOS)
852 - Lateinisch 2, Mitteleuropa (DOS)
855 - Kyrillisch
857 - Türkisch, Türkisch (DOS)
860 - Portugiesisch, Portugiesisch (DOS)
861 - Isländisch, Isländisch (DOS)
862 - Hebräisch, Hebräisch (DOS)
863 - Französisch (Kanada), Französisch (Kanada) (DOS)
864 - Arabisch, Arabisch (864)
865 - Nordisch, Nordisch (DOS)
866 - Russisch, Kyrillisch (DOS)
869 - Modernes Griechisch, Modernes Griechisch (DOS)
932 - Japanisch, Japanisch (Shift-JIS)
936 - Chinesisch (vereinfacht): Volksrepublik China, Singapur
949 - Koreanisch (Einheitlicher Hangul-Code)
950 - Chinesisch (traditionell): Taiwan, Hongkong, Volksrepublik China
ALARABI - Legt die Codepage 448 fest
  • ANSI-Codepage-IDs
1250 - Mitteleuropa
1251 - Kyrillisch
1252 - Westeuropa
1253 - Griechisch
1254 - Türkisch
1255 - Hebräisch
1256 - Arabisch
1257 - Baltische Sprachen
1258 - Vietnamesisch
BIG5 - Chinesisch: Taiwan, Hongkong, Macau
SJIS - Japanisch (Legt die Codepage 932 fest)
  • ISO-Codepage-IDs
88591 - Lateinisch 1: Westeuropa
88592 - Lateinisch 2: Mittel- und Osteuropa
88593 - Lateinisch 3: Südeuropa
88594 - Lateinisch 4: Nordeuropa
88595 - Kyrillisch
88596 - Arabisch
88597 - Griechisch
88598 - Hebräisch
88599 - Lateinisch 5: Türkisch
885910 - Lateinisch 6: Nordisch
885911 - Thailändisch
885913 - Litauisch
885915 - Lateinisch 9: Westeuropa (nach Upgrade von Lateinisch 1)
  • Unicode-Werte
UTF-8 - Legt die Codepage 65001 fest
UTF8 - Legt die Codepage 65001 fest
Hinweis:
Shapefiles können jetzt in UTF-8 gespeichert werden. In UTF-8 codierte Shapefiles werden aber nur in ArcGIS for Desktop erkannt.

Option B

Sie können aber auch eine Batch-Datei verwenden, um die Windows-Registry zu modifizieren.
  1. Erstellen Sie in Notepad die Datei ChangeCodePage.bat mit dem folgenden Code:
    Code:
    @ECHO OFF
    IF "%1"=="" GOTO :EOF 
    reg add HKEY_CURRENT_USER\Software\ESRI\Desktop10.3\Common\CodePage /v dbfDefault /t REG_SZ /d %1 /f
    Hinweis:
    Ändern Sie den Pfad entsprechend der Version von ArcGIS auf dem gewünschten System, zum Beispiel: ...\Desktop10.1).
  2. Speichern Sie die Datei in einem Verzeichnis auf dem Computer, der modifiziert werden soll.
  3. Öffnen Sie ein Eingabeaufforderungsfenster (die Batch-Datei muss mit der Option "Als Administrator ausführen" ausgeführt werden).
  4. Um die Batch-Datei auszuführen (und in diesem Beispiel die Codepage "Japanisch" festzulegen), navigieren Sie zum Verzeichnis der Batch-Datei und führen den folgenden Befehl aus:
    ChangeCodePage SJIS
    Die Registrierungsschlüssel sind erstellt und die Codepage SJIS ist festgelegt.
[O-Image]