sql >> Database >  >> RDS >> Mysql

CSV opslaan met UTF-16BE-codering in PHP

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

(Weet je zeker dat je BE wilt? Het is een vrij zelden gebruikte codering. Windows "Unicode" is UTF-16LE.)

Ik zou het gebruik van "auto" vermijden als de from_encoding. Het is een onbetrouwbare bodge die vaak de verkeerde resultaten oplevert, vooral bij korte snaren. Aangezien de invoer blijkbaar UTF-8 is, moet u dat in plaats daarvan expliciet vermelden.

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

Helaas fputcsv kan niet schrijven naar een UTF-16-gecodeerd bestand. Het gebruikt single-byte ASCII-komma's/quotes/newlines, dus het werkt alleen voor coderingen die ASCII-supersets zijn. Dus als je het wilt gebruiken, moet je het hele bestand als UTF-8 schrijven en het hele bestand vervolgens transcoderen naar UTF-16.

Misschien wilt u in plaats daarvan een andere (of uw eigen) CSV-schrijver overwegen; en niet alleen vervelend om te gebruiken voor niet-ASCII-coderingen, fputcsv voldoet ook niet aan de RFC-standaard voor CSV-bestanden, dus u kunt gemakkelijk bestanden genereren die de meeste CSV-intensieve software niet goed kan laden.

De ingebouwde CSV-functies van PHP zijn in wezen een complete verspilling van ieders tijd.




  1. SSL integreren met mysql - Toegang geweigerd

  2. Slaapstand session.beginTransaction() oproep en Mysql Start transactie

  3. Alternatief voor bitsgewijze bediening

  4. SQL-besteladres op huisnummer