dedlfix: CSV-File Unicode

Beitrag lesen

Hi!

ich würde gerne ein Unicode CSV-File verarbeiten.

Unicode ist ein Zeichensatz, keine Zeichenkodierung. Zum physikalischen Abbilden von Daten wird eine Zeichenkodierung benötigt. In welcher Kodierung liegt die Datei wirklich vor?

function decodeUnicode($str) {

$ret = "";
$x = strlen($str);
for ($i = 1; $i < $x; $i += 2)
$ret .= substr($str, $i, 1);
return $ret;
}

  
Danach (von mir ein bisschen gekürzt) zu urteilen liegt wohl UTF-16BE vor. Du nimmst immer nur das zweite Byte und bekommst von Zeichen jenseits vom Codepoint 255 kaputtes Zeug. Aber egal erst einmal, vielleicht hast du ja solche Zeichen nicht.  
  

> $fh = fopen($CSVFilename,"r");  
> while($line=fgetcsv($fh,null,"\t","\"")){  
  
Ich könnte nun eine Weile spekulieren über die Mischung von UTF-16BE und einer 1-Byte-Kodierung für die Trennzeichen, aber besser wäre, wenn du mal einen Hex-Dump zeigst, in dem mindestens eine komplette Zeile und ein " als Datenbestandteil vorkommt.  
  

> evtl jemand hier, der meinen Fehler sieht?  
  
Sicherlich nicht ohne die Ausgangsdaten zu kennen.  
  
  
Lo!