Mysql
 sql >> база данни >  >> RDS >> Mysql

запазване на CSV с UTF-16BE кодиране в PHP

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

(Сигурни ли сте, че искате BE? Това е доста рядко използвано кодиране. Windows „Unicode“ е UTF-16LE.)

Бих избягвал да използвам "auto" като from_encoding. Това е ненадежден бодж, който често дава грешни резултати, особено на къси струни. Тъй като входът очевидно е UTF-8, трябва да посочите това изрично вместо това.

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

За съжаление fputcsv не може да пише във файл, кодиран с UTF-16. Той използва еднобайтови ASCII запетаи/кавички/нови редове, така че работи само за кодировки, които са супермножества на ASCII. Така че, ако искате да го използвате, ще трябва да напишете целия файл като UTF-8 и след това да транскодирате целия файл в UTF-16.

Вместо това може да помислите за различен (или ваш собствен) CSV записващ инструмент; както и че е досадно да се използва за не-ASCII кодировки, fputcsv също така не отговаря на стандарта RFC за CSV файлове, така че можете лесно да генерирате файлове, които повечето CSV-консумиращи софтуери не могат да заредят правилно.

Вградените CSV функции на PHP са по същество пълна загуба на време за всички.




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Актуализиране на полето за грешка CodeIgniter

  2. Защо получавам тази грешка „Неуспешна комуникационна връзка Последният пакет изпратен...“ при свързване с MySQL с Java (Netbeans)?

  3. Изчисляване на процентилен ранг в MySQL

  4. MySQL ред по две стойности

  5. Как да запазя конфигурационните променливи на MySQL в CloudSQL?