CSV-Import Unbekannte Zeichen (UTF-16)

xamunrax

Erfahrenes Mitglied
Hallo ich bastell gerade für meine Firma einen Datenimport, dieser will jedoch nicht so gelingen wie ich es will.

Die Rohdaten werden in einer csv-Datei (aus FileMaker) geliefert (UTF-16 Codierung).

Wenn ich diese nun mittels PHP einlese und bearbeite bekomme ich nur Datenfragmente angezeigt, soweit auch logisch.
Nun habe ich mir eine Funktion von php.net besorgt die schon einmal viele Probleme löst.

Funktion:
PHP:
function utf16_decode($str, &$be=null) {
			    if (strlen($str) < 2) {
			        return $str;
			    }
			    $c0 = ord($str{0});
			    $c1 = ord($str{1});
			    $start = 0;
			    if ($c0 == 0xFE && $c1 == 0xFF) {
			        $be = true;
			        $start = 2;
			    } else if ($c0 == 0xFF && $c1 == 0xFE) {
			        $start = 2;
			        $be = false;
			    }
			    if ($be === null) {
			        $be = true;
			    }
			    $len = strlen($str);
			    $newstr = '';
			    for ($i = $start; $i < $len; $i += 2) {
			        if ($be) {
			            $val = ord($str{$i})   << 4;
			            $val += ord($str{$i+1});
			        } else {
			            $val = ord($str{$i+1}) << 4;
			            $val += ord($str{$i});
			        }
			        $newstr .= ($val == 0x228) ? "\n" : chr($val);
			    }
			    return $newstr;
			}

Soweit so gut jetzt ist zumindest nicht mehr jedes zweite Zeichen ein "Rautenfragezeichen", jedoch schafft diese Funktion nicht alle Zeiche "auszubessern". z.B.: "•" dieses Zeichen konvertiert er leider nicht (und etliche andere - z.B. das Apple-Logo)

Nun meine Frage wie kann ich diese Zeichen umwandeln? Ich würde mich auch mit entfernen zufrieden geben.


Vielen Dank!
 
Moin,

versuche es mal mit [phpf]mb_convert_encoding[/phpf]

Ich hab das mal probiert, zumindest das • wird korrekt dargestellt.

Bei dem Apple-Logo dürfte es problematisch werden.
Das gehört zum Private Use Area, dort ist nicht eindeutig spezifiziert, wofür der Code steht.

Bei Apple-Fonts wirst du da wohl das Apple-Logo sehen, woanders etwas anderes.
Siehe auch: http://hea-www.harvard.edu/~fine/OSX/unicode_apple_logo.html

Ob wirklich alle Zeichen korrekt dargestellt werden, dürfte davon abhängen, ob das jeweilige Zeichen in dem Font, der zur Anzeige definiert ist, auch vorhanden ist.
 
Zurück