ASCII Problem mit USE CHARACTER SET MacOS 10.11-10.5

Hallo,

Ich exportiere per Befehl EXPORT DIF Daten von einem Rechner mit El Capitan auf einen mit MacOS 10.5.8. Das funktioniert prima, bis auf die diakritischen Zeichen a = ä usw.

4D11 läuft im Kompatilitätsmodus

USE CHARACTER SET (;0) ist eingestellt und für Import ensprechend (;2)

Mit USE CHARACTER SET (“ASCII”;0) will er eine ASCII Tabelle laden, die ich nicht habe.

Welche Tabelle hat das richtige Format, wo gibt es die? Ist das der richtige Weg?

Vielen Dank für Rückmeldungen!

Grüße!

Manfred Mahn

Ich würde es komplett ohne “USE CHARACTER SET” machen. Wenn die 4D Versionen übereinstimmen, sollte es kein Problem geben. Ansonsten würde ich UTF-8 verwenden. Dann wird die Exportdatei zwar grösser, die Umlaute sollten aber kein Problem mehr sein.

Ich würde es komplett ohne “USE CHARACTER SET” machen. Wenn die 4D Versionen übereinstimmen, sollte es kein Problem geben. Ansonsten würde ich UTF-8 verwenden. Dann wird die Exportdatei zwar grösser, die Umlaute sollten aber kein Problem mehr sein.

Danke für die Antwort.

Ohne “USE CHARACTER SET” geht es leider nicht. Aus “äöß◊üb” wird “??§?b”

“USE CHARACTER SET(“UTF-8”;0)” erwartet eine Datei “UTF-8” die bei mir nicht vorhanden ist.

Wo gibt es diese und in welchem Format muß sie sein?

Grüße!

Manfred Mahn

: Manfred MAHN

USE CHARACTER SET (;0) ist eingestellt und für Import ensprechend
(
;2)

Das ist ein bißchen seltsam : (*;2) existiert nicht

Zum exportieren in unicode modus:
<code 4D>
USE CHARACTER SET(“UTF-16LE”;0) Verwende Zeichensatz UTF_16 'LIttle Endian' EXPORT TEXT([MyTable];"MyText") Exportiere Daten durch diesen Filter
USE CHARACTER SET(*;0) ` Stelle wieder den Standard Zeichensatz her
</code 4D>

Um zu importieren:
<code 4D>
USE CHARACTER SET(“UTF-16LE”;1) Verwende Zeichensatz UTF_16 'LIttle Endian' // etwas USE CHARACTER SET(*;1) Stelle wieder den Standard Zeichensatz her
</code 4D>

: Manfred MAHN

4D11 läuft im Kompatilitätsmodus
Ich verstehe dass die DB nicht unicode ist dann wird USE CHARACTER SET nicht verwendet.

: Manfred MAHN

4D11 läuft im Kompatilitätsmodus

Mit USE CHARACTER SET (“ASCII”;0) will er eine ASCII Tabelle laden,
die ich nicht habe.
Welche Tabelle hat das richtige Format, wo gibt es die? Ist das der
richtige Weg?

Aus “äöß◊üb” wird “??§?b”

Wenn ein ß als § erscheint, dann wurde zum Export der Zeichensatz “mac” benutzt statt “Windows-1252”.
Sie brauchen also eine ASCII-Tabelle für “Windows-1252”.
Die können Sie selbst erstellen (aber nur im Kompatibilitätsmodus):

<code 4D>
$f:=Create document(“AscMap-Windows-1252.4fi”;"")
If (ok=1)
For ($i;0;255)
SEND PACKET($f;Substring(Mac to Win(Char($i))+"?";1;1))
End for
CLOSE DOCUMENT($f)
End if

</code 4D>

Oder siehe Anhang: http://forums.4d.fr/4DBB_Main/x_User/2905285/files/19572747.zip

Allerdings wundert es mich ein bisschen, denn in der 4D-Doku zu EXPORT DIF steht, dass das DIF-Format den Zeichensatz “IBM437” verlangt und nicht den Standard-Windows-Zeichensatz “Windows-1252”.
Sie sollten also die erzeugte DIF-Datei unbedingt im Ziel-System testen.

Außerdem hatten Sie in Ihrem Beispiel “äöß◊üb” als vierten Buchstaben einen Diamond. Den Diamond gibt es im Windows-Zeichensatz nicht, weder in Windows-1252 noch in IBM437.
Wenn Ihre Datenbank also Diamonds enthält, werden Sie sowieso ein Problem bekommen. Sie sollten am besten alle Diamonds durch Kleiner-Größer-Zeichen ersetzen, wie das 4D ja auch bei den Interprozessvariablen praktiziert.

Ein anderer Ansatz ist, den EXPORT DIFF “einfach so” durchzuführen und die exportierte Datei nachträglich zu korrigieren, z. B. mit
<code 4D>
DOCUMENT TO BLOB($dateiname;$blob)
$text:=Convert to text($blob;“Mac”)
CONVERT FROM TEXT($text;“IBM437”;$blob)
BLOB TO DOCUMENT($dateiname;$blob)

</code 4D>
Das wäre dann der DOS-Zeichensatz “https://de.wikipedia.org/wiki/Codepage_437IBM437>”, der z. B. von Excel (Windows) bei DIF verlangt wird.

Vielen Dank für die Datei,

ich habe das ausprobiert mit USE CHARACTER SET (“Windows-1252”;0)

und alle anderen Versionen mit USE CHARACTER SET

immer ist das Ergebnis:

öäüßÖÄÜ?asdf

???§???asdf

Wenn ich die Datei, die EXPORT DIF im Finder produziert mit TextEdit öffne, dann ist alles OK. Auf dem Start und Ziel Computer gleichermaßen.

in IMPORT DIF liegt das Problem. Sieht so aus als würden nur codes von 0-127 behandelt. Wie sollen denn aus gleichen Fragezeichen die Buchstaben richtig zugeordnet werden?

Gibt es nicht doch noch einen Weg IMPORT DIF?

Vielen Dank für die Hilfe bisher!

Grüße!

Manfred Mahn

warum überhaupt DIF?
Warum nicht Text, das sollte weniger Probleme machen oder zwischen zwei 4D, erst recht bei gleichen Versionen, SEND RECORD und RECEIVE RECORD.

Ach so, Sie benutzen EXPORT DIF und IMPORT DIF zum Datenaustausch zwischen zwei 4D-Datenbanken.

Dann sollte es eigentlich völlig egal sein, welchen Zeichensatz Sie benutzen, Hauptsache es ist bei Export und Import derselbe.

Leider scheint das aber nicht zu stimmen. Ich kann es am Mac nicht prüfen, weil ich keinen habe, aber unter Windows tritt das Problem im Non-Unicode-Modus ebenfalls auf: Wenn man bei EXPORT DIF den Windows-Zeichensatz benutzt, muss man bei IMPORT DIF den Macintosh-Zeichnsatz benutzen, damit “Müller” wieder zu “Müller” wird. Scheint ein Bug bei IMPORT DIF zu sein, den man durch absichtliche Wahl eines falschen Zeichensatzes umgehen kann.