Applescript: Probleme mit Charset

maceis

Aktives Mitglied
Thread Starter
Dabei seit
24.09.2003
Beiträge
16.880
Reaktionspunkte
626
Hallo zusammen,

ich habe seit vielen Jahren ein Applescript im Einsatz, dass Texte aus einer Reihe von Exceldateien (mit definierter Struktur) ausliest und in eine Datenbank einspeist. Das Skript kommt so ungefähr ein bis zwei mal pro Jahr zum Einsatz.

Im Groben funktioniert das Skript so, dass in einer Schleife die Excel Dateien verarbeitet werden.
Aus den Inhalten werden in weiteren Schleifen mysql-Kommandos zusammengebaut.
Die Kommandos werden dann wie folgt an die Datenbank übertragen:

Code:
do shell script "echo \"" & the_command & "\"" & " |  iconv -t ISO_8859-1 -f UTF8-MAC |  /usr/local/mysql/bin/mysql -u... -p... ..."

Inzwischen verwende ich den Script-Editor in Mojave und seither habe ich das Problem, dass ich Fehlermeldungen enthalte z. B. wenn die Texte Umlaute (oder andere Sonderzeichen) enthalten.

Wenn z. B. das Wort "Frühjahr" enthalten ist, wird folgender Fehler ausgeworfen (kommt natürlich von mysql):
Code:
ERROR 1366 (HY000) at line 1: Incorrect string value: '\xFChjahr...' for column 'text' at row 17

Die Datenbank ist in latin1 und das möchte ich nicht ändern.
Ich vermute das Problem liegt darin, wie Applescript (neuerdings) mit dem Charset umgeht.
Das schließe ich auch daraus, dass Exceldateien, die vor einem Jahr (unter Sierra) noch problemlos verarbeitet wurden, jetzt die selben Fehler auswerfen.

Hat jemand eine Idee, wie ich das Problem lösen kann?
Muss ich vielleicht in dem iconv Filter ein anderes from (-f) Charest verwenden als UTF8-MAC?
In welchem Charset steht "\xFC" für ü?
mysqld-Version: mysqld Ver 5.6.22

Danke und Gruß
maceis
 
https://www.codetable.net/hex/fc
ist schon unicode.

wie zu lesen ist, wird UTF8-MAC eher für die filenamen kodierung bei macOS benutzt, weil dort eine andere normalisierung verwendung findet.
da deine quelle aber ein exel dokument ist, wird dort wohl normales UTF8 verwendet.
also vielleicht das man probieren.
 
Zurück
Oben Unten