Mysql
 sql >> Baza danych >  >> RDS >> Mysql

zapisywanie CSV z kodowaniem UTF-16BE w PHP

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

(Czy na pewno chcesz BE? To dość rzadko używane kodowanie. Windows „Unicode” to UTF-16LE.)

Unikałbym używania "auto" jak from_kodowanie. To zawodna bodge, która często daje złe wyniki, zwłaszcza na krótkich strunach. Ponieważ dane wejściowe są najwyraźniej UTF-8, należy to wyraźnie określić.

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

Niestety fputcsv nie można pisać do pliku zakodowanego w UTF-16. Używa jednobajtowych przecinków/cytatów/nowych linii ASCII, więc działa tylko dla kodowań, które są nadzbiorami ASCII. Więc jeśli chciałbyś go użyć, musiałbyś zapisać cały plik jako UTF-8, a następnie transkodować cały plik do UTF-16.

Możesz zamiast tego rozważyć innego (lub własnego) autora CSV; jak również irytujące w użyciu dla kodowań innych niż ASCII, fputcsv nie jest również zgodny ze standardem RFC dla plików CSV, więc możesz łatwo generować pliki, które większość oprogramowania wykorzystującego CSV nie może poprawnie załadować.

Wbudowane funkcje CSV PHP są w zasadzie kompletną stratą czasu każdego.




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Jak to zrobić w Laravel, podzapytanie gdzie in

  2. Zdefiniowane przez użytkownika zmienne MySQL w Laravel 3?

  3. Zapytanie SQL do obliczenia salda konta

  4. Użyj relacyjnych baz danych MySQL w Fedorze 13

  5. Jak napisać zapytanie HQL JOIN dla wybranych kolumn w wielu tabelach za pomocą konstruktora w klauzuli Select?