Archiv der Kategorie: utf-8

Sonderzeichen im UTF-8 CSV Export für Excel

Wer schon mal CSV Daten geschrieben hat kennt sicher das Problem, dass die Sonderzeichen meist nicht richtig angezeigt werden, wenn man in UTF-8 exportiert.

Wer das vermeiden will muss einfach den richtigen Unicode-Header mitsenden, dieser lautet:

echo pack("CCC",0xef,0xbb,0xbf);

Dieses Kommando sendet ihr am besten nach den „header“ Kommandos, aber noch vor den Daten, dann zeigt Excel auch die richtigen Daten per Doppelklick an.

P.S. LibreOffice / OpenOffice sind von Haus aus schlau genug und stellen die Daten ohnehin richtig dar, das Problem existiert also wirklich nur für Excel.

Datenbankverbindung beim Zend Framework auf UTF-8 umstellen

Bei verwendung des Zend Frameworks und dessen application.ini ist es sehr leicht, den gewünschten Zeichensatz einzustellen, damit sowas nicht passiert: 40,8�C

Ulrich hat da schon 2009 einen Artikel drüber geschrieben, an dieser Stelle nochmal: Danke!

Hier die Lösung: In eure application.ini tragt ihr einfach den entsprechenden charset-parameter ein:

resources.db.params.charset  = utf8

Und schon habt ihr “saubere” Ergebnisse: 40,8°C

UTF Dateien mit PHP fopen erzeugen

Will Mensch eine „UTF-8“ Datei mit PHP’s eigener fopen-Funktion erzeugen, muss er nur ein paar Dinge beachten.

Zum einen muss der jeweilige Inhalt des fwrite-Befehl UTF-8 encoded sein; das erreicht man am sichersten über die Funktion mb_convert_encoding.

Dann erzeugt man das File auf jeden Fall mit dem ‚b‘ Parameter, sicher ist sicher.

Als letztes setzt Mensch in der Datei noch die entsprechende „Byte Order Mark“ hinein. Das passiert mit Hilfe des pack-Kommandos.

Letztendlich kann man dann seinen Content in die Datei schreiben.


$content = mb_convert_encoding($content,'UTF-8');
$fHandle = fopen($filename,'wb');
fwrite($fHandle, pack("CCC",0xef,0xbb,0xbf));
fwrite($fHandle, $content);
fclose($fHandle);

P.S.: Nicht das fclose vergessen, das wäre einfach schlechter Stil 😉