sql >> Databasteknik >  >> RDS >> Mysql

sparar CSV med UTF-16BE-kodning i PHP

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

(Är du säker på att du vill ha BE? Det är en ganska sällan använd kodning. Windows "Unicode" är UTF-16LE.)

Jag skulle undvika att använda "auto" som from_encoding. Det är en opålitlig bodge som ofta ger fel resultat, särskilt på korta strängar. Eftersom indata tydligen är UTF-8 bör du ange det uttryckligen istället.

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

Tyvärr fputcsv kan inte skriva till en UTF-16-kodad fil. Den använder enbyte ASCII-komma/citattecken/nyrader så det fungerar bara för kodningar som är ASCII-superuppsättningar. Så om du vill använda den måste du skriva hela filen som UTF-8 och sedan koda om hela filen till UTF-16.

Du kanske vill överväga en annan (eller din egen) CSV-skribent istället; Förutom att det är irriterande att använda för icke-ASCII-kodningar, fputcsv uppfyller inte heller RFC-standarden för CSV-filer, så du kan enkelt generera filer som de flesta CSV-krävande program inte kan laddas ordentligt.

PHP:s inbyggda CSV-funktioner är i princip ett totalt slöseri med allas tid.




  1. Introduktion av agentbaserad databasövervakning med ClusterControl 1.7

  2. JSON från twitter API innehåller \u2019

  3. Jämför kolumner där en är lik en del av en annan

  4. MySQL-databasanslutning med Visual Studio 2013 Preview