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:
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!
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!