5 votes

L'exportation de CSV avec League/CSV n'encode pas les trémas

J'exporte un modèle dans Laravel 5.7, en utilisant l'option Ligue/CSV l'emballage :

public function export(Request $request)
{
    $people = Person::all();
    $location = 'export.csv';
    $csv = Writer::createFromPath($location, 'w');
    $csv->setOutputBOM(Writer::BOM_UTF8);
    $csv->setDelimiter(';');
    foreach ($people as $person) {
        $csv->insertOne($this->serializePerson($person));
    }
    return response($location);
}

protected function serializePerson($person)
{
    return [
        $person->name,
        $person->age,
    ];
}

Cela permet de créer le export.csv est correct, mais les trémas sont rendus de manière incorrecte (par exemple, en tant que ). J'aurais pensé que le réglage de la nomenclature aurait résolu ce problème. Quelqu'un a-t-il une solution ?

EDIT : Le problème n'était pas l'exportation, c'était Mac Excel qui affichait le tréma de façon incorrecte. Voir ma réponse ci-dessous.

1voto

GluePear Points 3014

Ma question était mal formulée, mais je laisse la réponse ici au cas où quelqu'un d'autre aurait le même problème. Le fichier était en fait correctement exporté : si je l'ouvrais dans un éditeur de texte, le tréma était correctement formé.

Pour le faire fonctionner correctement dans Excel (sur un Mac), j'ai dû.. :

  1. Ouvrir une feuille de calcul vide
  2. Données > Obtenir des données externes > Importer un fichier texte...
  3. Dans le menu déroulant Origine du fichier, sélectionnez "Unicode (UTF-8)"

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X