Sonderzeichen in PHP-Datei

derpfaff

Erfahrenes Mitglied
Hallo Leute,

ich habe ein Problem und hoffe auf Hilfe. Und nein, es geht nicht um das typische Ersetzen von Sonderzeichen.

Einleitung:
Ich mache grade ein Praktikum und sitze hier an einer Adressdatenbank. Die dort enthaltenen Daten sollen für z. B. Serienbriefe in CSV-Dateien exportiert werden, damit sie von dort in ein Excel-Dokument geladen und in den Serienbrief eingefügt werden können.
Mit Windows stellt das nicht unbedingt das Problem dar, Mac macht Schwierigkeiten, da die Mac-Version von Excel die Sonderzeichen anders interpretiert. So ist ein "Ö" bei Win = 214, beim Mac jedoch = 133. Also versuche ich über ein Array die Sonderzeichen zu korrigieren, sofern es sich um einen Mac handelt, auf dem gearbeitet wird.

Mein Problem:
PHP erkennt die Sonderzeichen nicht an, sprich: das Array ist ungültig!
PHP:
$sonderzeichen = array('Ä' => 128; 'Å' => 129; 'Ç' => 130; 'É' => 131; 'Ñ' => 132; ... );
Das "Ä" funktioniert noch, aber ab dem zweiten Zeichen ist Schluss. Nun liegen die Daten aber so in der DB und werden auch mit eben diesen Zeichen benötigt (für Kunden in Frankreich, Dänemark...). Gibt es eine andere Möglichkeit, die einzelnen Zeichen zu ersetzen? Bzw. eine Möglichkeit, die Daten für PHP so zugänglich zu machen, dass man damit arbeiten kann?

Ich hoffe, ich konnte das Problem schildern und ihr habt eine gute Idee!

Gruß,
derPfaff
 
Windows verwendet vermutlich den ISO-8859-1-Zeichensatz und den Mac-OS-Roman-Zeichensatz. Es sollte also reichen einen gemeinsamen Zeichensatz (besser ISO 8859-1 als Mac OS Roman) zu verwenden.
 
ich denke es liegt eher daran das er Ä erkennt und die anderen nicht das du nach dem Ä ein ";" (Strichpunkt) benutzt hast. versuch es mal mit einem komma zeichen.

bin zwar neu hier und php hab ich auch noch nicht so viel ahnung, aber das könnte doch der grund sein oder?
 
@silv20: Ich weiß ehrlich gesagt nicht, was du mir damit sagen willst Es handelt sich um ein Array, da trennt man mit einem Semikolon (Strichpunkt). Und dass die anderen nicht bekannt sind, ist ja mein Problem.
Übrigens: Bitte auf korrekte Schreibweise achten, dann wirds vielleicht verständlicher.

@Gumbo:
Ich bin selbst PC-Nutzer und habe gerade Schwierigkeiten damit, die Möglichkeit zur Umstellung zu finden. Kannst du mir einen Tipp geben? Und welche Folgen könnte das für andere Programme haben?

Aber danke für die Hilfe! An beide!

EDIT:
Habe doch noch eine Lösung gefunden *freu*!
Und zwar wandel ich den String in ein Array um und prüfe jedes Zeichen mittels ord(). Sobald dann zB "233" herauskommt, muss ich mittels "chr(142)" stattdessen einsetzen.
Sprich: ich gucke, ob der Ascii-Code der eines "é" ist. Wenn ja, nimm den Ascii-Code vom Mac.
Ist zwar nicht die beste Lösung aber ich muss nicht sicherstellen, dass auf allen Macs die gleiche Einstellung verwendet wird.
 
Zuletzt bearbeitet:
Es handelt sich um ein Array, da trennt man mit einem Semikolon (Strichpunkt).
Seit wann denn das? :suspekt: Wäre mir wirklich neu, und wenn du mal error_reporting(E_ALL); mitlaufen lassen würdest, wüsstest auch du, dass da ein Fehler auftritt.

Genaueres dazu in der PHP Doku, denn Array-Elemente werden in dieser Schreibweise durch normale Kommata getrennt. Das Semikolon kennzeichnet in PHP grundsätzlich den Abschluss einer Anweisung, Zuweisung oder überhaupt einer Befehlssequenz.
 
Oh man, so geblendet muss man erstmal sein!
Recht hast du. Ich habe jetzt tagelang mit CSV-Dateien gearbeitet, dass ich den Fehler nicht mal bemerkt habe, wenn ich mit der Nase drauf gestoßen werde. Ok, ich werde es morgen sofort probieren. Dann kann ich mir die andere Lösung klemmen - zuviel Schreibarbeit.
Und sorry an silv20, hattest Recht. Aber das lag an der Rechtschreibung usw... ;)
 
Zurück