Tutorials

Einige nützliche Hilfen und Code-Schnipsel, die ich immer wieder benötige und deshalb hier für alle sammle.

Zurück zur Übersicht

PHP: Umlaute/Sonderzeichen in CSV Export (Encoding)

#Tutorials#PHP

Bei einem CSV Export via PHP ist mir aufgefallen, dass viele Sonderzeichen, insbesondere das €-Zeichen (Euro) einfach kaputt dargestellt werden. Nach sehr langer Suche und herumprobieren habe ich hier die Lösung gefunden.

Excel erwartet das Windows 1252 Encoding, geliefert hatte ich UTF-8. Alle anderen Encodings, besonders ISO 8859-1 (Latin1) gehen nicht, da das €-Zeichen erst ab ISO 8859-15 drin war. Aber auch ISO 8859-15 war nicht ausreichend für Excel.

Funktion


function convertToWindowsCharset($string) {
  $charset =  mb_detect_encoding(
    $string,
    "UTF-8, ISO-8859-1, ISO-8859-15",
    true
  );
 
  $string =  mb_convert_encoding($string, "Windows-1252", $charset);
  return $string;
}

Benutzung


$str = '€äüöüö';
$str = convertToWindowsCharset($str);

// nun ist $str im windows1252 Format und Excel kann es lesen

Kommentare

  • Benjamin
    Vielen Dank dafür! In meinem Fall lag es eher am Code meines Formulars. Ich hatte im <form>-tag vergessen 'accept-charset="Windows-1252"' hinzu zufügen. Bei der Übermittlung der Daten wurde die Codierung bereits zerschossen. Erst hatte ich es mit UTF-8 versucht. Da meine PHP Anwendung auf einem Microsoft Internet Information Server (IIS) läuft, hatte UTF-8 jedoch nicht funktioniert. Mit Windows-1252 klappt es. Vielen Dank!!!
    Antworten
  • Tobi
    Super - vielen Dank! Sehr einfach im Script zu ergänzen und das Problem war behoben.
    Antworten
  • Jan
    DANKE!!! Danach habe ich lange gesucht!
    Antworten
    • Andre Rinas
      Freut mich, dass ich helfen konnte.
      Grüße Andre
      Antworten

Hinterlasse einen Kommentar

Antworten abbrechen

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind markiert *

Kommentar wird gespeichert
Danke für deinen Kommentar! Sobald er freigegeben wurde erscheint er hier.