Also wenn ich urlencode vorher aufrufe bekomme ich diesen String: "1%001%00".
also Null-Bytes, sieht aus wie UTF-16.
Die csv Datei öffne ich recht primitiv mit file(). Das Array gehe ich dann durch und mach ein explode(",",$arFile).
Durch das explode hätte ich eigentlich ein Null-Byte am Anfang des Strings mehr erwartet.
Du übersichst dabei, dass das BOM bei UTF-8 3 Oktette umfasst, bei UTF-16 aber nur zwei - möglicherweise erklärt sich hier die Verschiebung um ein Oktett, wenn PHP davon ausgeht, es sei UTF-8 (ohne das BOM eigentlich zu prüfen).