PHP: UTF-8-Kodierung eines Streams fĂĽr fgetscsv()
Problem
Hochgeladene Datei ist ISO-8859-1, fgetscsv() erwartet jedoch eine UTF-8-kodierte Datei. Sonderzeichen, Umlaute werden abgeschnitten bzw. ignoriert.
Lösung
Stream UTF-8 kodieren:
<?php
class utf8encode_filter extends php_user_filter { function filter($in, $out, &$consumed, $closing) { while ($bucket = stream_bucket_make_writeable($in)) { $bucket->data = utf8_encode($bucket->data); $consumed += $bucket->datalen; stream_bucket_append($out, $bucket); } return PSFS_PASS_ON; } }
?>
<?php
$handle = fopen($file, 'r'); stream_filter_register('utf8encode', 'utf8encode_filter') or die('Failed to register filter'); stream_filter_prepend($handle, 'utf8encode');
?>
(Via: php.net)