Wie richtigen Zeichensatz herausfinden/setzen

roedert

roedert

Aktives Mitglied
Thread Starter
Dabei seit
05.01.2011
Beiträge
12.148
Reaktionspunkte
3.316
Ich habe ein Textdatei mir Umlauten, die unter OS X zB in Textedit korrekt dargestellt wird:

Ausschnitt:
Code:
FN:oe ö
FN:ue ü

Lasse ich mir diese aber im Terminal mit more anzeigen bekomme ich

Code:
FN:oe <9A>
FN:ue <9F>

Eigentlich soll diese Datei mit einem kleinen php-Programm ausgelesen und in ein mysql-DB importiert werden - aber auch hier bekomme ich nur ein "?" statt den entsprechenden Umlauten.

Wie kann ich die korrekte Codierung herausfinden/setzen?
 
Vermutlich ist es so:

- dein System ist eingestellt auf UTF-8
- die Datei ist kodiert in ISO-8859-15

Ich würde die Datei zu UTF-8 konvertieren mit iconv:
Code:
iconv -f ISO-8859-15 -t UTF-8 <inputdatei> > <outputdatei>
 
Leider auch nicht :(

Nach dem iconv zeigt more die Datei so an:
Code:
FN:oe <U+009A>
FN:ue <U+009F>

Die Datei selbst wird mit einem kleinen OSX-Script erzeugt:

Code:
tell application "Contacts"
	set the clipboard to (vcard of people) as text
	do shell script "pbpaste > contacts.vcf"
end tell

In der man-page von pbpaste steht, dass es die Umgebungsvariable zur Festlegung der Kodierung verwendet - die ist bei mir auch gesetzt auf LANG=de_DE.UTF-8 - zumindest wird das in einer Terminal-Sitzung so angezeigt.
Oder ist diese Umgebungsvariable beim Aufruf aus dem OSX-Script mit "do shell script" evtl. nicht gesetzt?
 
Nach dem iconv zeigt more die Datei so an:
Code:
FN:oe <U+009A>
FN:ue <U+009F>
Oh.... okay, das sieht aus als wäre zwar die Datei in UTF-8, aber die beiden Umlaute noch nicht. Ich hab's selbst mal eben ausprobiert und bei mir klappt's:

1. Datei erstellen mit vim -> benutzt das im System eingestellte encoding: UTF-8
2. per iconv nach ISO-8859-15 konvertiert ergibt beim Lesen mit more die gleiche Ausgabe wie bei Dir am Anfang
3. per iconv die Datei von 2. nach UTF-8 konvertiert ergibt jedoch nicht die gleiche Ausgabe wie bei Dir am Ende, sondern korrektes UTF-8, bei dem man die Umlaute als solche sieht

Poste bitte mal die Ausgabe des Befehls locale.
 
  • Gefällt mir
Reaktionen: roedert
...da liegt das Problem:

locale aus der Terminalsitzung heraus:
LANG="de_DE.UTF-8"
LC_COLLATE="de_DE.UTF-8"
LC_CTYPE="de_DE.UTF-8"
LC_MESSAGES="de_DE.UTF-8"
LC_MONETARY="de_DE.UTF-8"
LC_NUMERIC="de_DE.UTF-8"
LC_TIME="de_DE.UTF-8"
LC_ALL=


locale aus einem OSX-Script mit do shell script aufgerufen
LANG=
LC_COLLATE="C"
LC_CTYPE="C"
LC_MESSAGES="C"
LC_MONETARY="C"
LC_NUMERIC="C"
LC_TIME="C"
LC_ALL=


Wenn ich den pbpaste "online" in der Terminalsitzung ausführe bekomme ich auch eine perfekt lesbare Datei, aber mit "do shell script" eben nicht.
 
Hab jetzt vielleicht nicht die Lösung, aber einen Workaround.

Ich rufe aus dem OSX-Script mit do shell script nicht direkt pbpaste auf, sondern ein kleines Script

Code:
export LANG=de_DE.UTF-8
pbpaste > .....

Oder gibt es einen Weg, wie "do shell script" gleich mit den richtigen locale-Einstellungen ausgeführt werden kann?
 
Oder gibt es einen Weg, wie "do shell script" gleich mit den richtigen locale-Einstellungen ausgeführt werden kann?

ja, gibt's

Code:
do shell script "LANG=de_DE.UTF-8 pbpaste > contacts.vcf"
 
  • Gefällt mir
Reaktionen: ruerueka
Zurück
Oben Unten