sql >> Database teknologi >  >> RDS >> Mysql

gemmer CSV med UTF-16BE-kodning i PHP

$key = mb_convert_encoding($key, 'UTF-16BE', "auto");

(Er du sikker på, at du vil have BE? Det er en temmelig sjældent brugt kodning. Windows "Unicode" er UTF-16LE.)

Jeg ville undgå at bruge "auto" som fra_encoding. Det er en upålidelig bodge, der ofte vil give de forkerte resultater, især på korte strenge. Da input tilsyneladende er UTF-8, bør du angive det eksplicit i stedet.

fputcsv($f, array_merge($firstLineKeys, $lineEncoded));

Desværre fputcsv kan ikke skrive til en UTF-16-kodet fil. Den bruger enkeltbyte ASCII-kommaer/anførselstegn/nylinjer, så den virker kun for kodninger, der er ASCII-supersæt. Så hvis du ville bruge det, skulle du skrive hele filen som UTF-8 og derefter omkode hele filen til UTF-16.

Du vil måske overveje en anden (eller din egen) CSV-skribent i stedet for; ud over at være irriterende at bruge til ikke-ASCII-kodninger, fputcsv overholder heller ikke RFC-standarden for CSV-filer, så du kan nemt generere filer, som de fleste CSV-forbrugende software ikke kan indlæse korrekt.

PHPs indbyggede CSV-funktioner er i bund og grund et komplet spild af alles tid.




  1. Erstat duplikerede mellemrum med et enkelt mellemrum i T-SQL

  2. MySQL vs. MongoDB

  3. Sådan genforespørger du automatisk med LoaderManager

  4. Sådan sletter du dublerede rækker fra en MySQL-tabel