Mit PHP 5.3 fgetcsv
Funktion habe ich einige Probleme aufgrund der Codierung Angelegenheiten. Beachten Sie, dass diese Datei spanische "spezielle" lateinische Zeichen wie grafische Akzente á, é, í ï usw. hat.php fgetcsv - Zeichensatzcodierung Probleme
Ich bekomme die CSV-Datei, die einige strukturierte Daten exportiert, die ich in einer MS 2008 für Mac Excel-Datei habe.
Wenn ich es mit Mac OS X TextEdit
Anwendung öffnen, scheint alles perfekt zu gehen.
Aber wenn ich zu meinem PHP-Programm komme und versuche, die CSV mit dieser fgetcsv PHP-Funktion zu lesen, bekomme ich es nicht, den Zeichensatz richtig zu lesen.
/**
* @Route("/cvsLoad", name="_csv_load")
* @Template()
*/
public function cvsLoadAction(){
//setlocale(LC_ALL, 'es_ES.UTF-8');
$reader = new Reader($this->get('kernel')->getRootDir().'/../web/uploads/documents/question_images/2/41/masiva.csv');
$i = 1;
$r = array("hhh" => $reader -> getAll());
return new Response(json_encode($r, 200));
}
Wie Sie sehen können, habe ich auch eine setlocale
-es_ES.UTF-8
zu nutzen versucht. Aber nichts funktioniert.
Der Leseteil kommt hier:
public function getRow()
{
if (($row = fgetcsv($this->_handle, 10000, $this->_delimiter)) !== false) {
$this->_line++;
return $this->_headers ? array_combine($this->_headers, $row) : $row;
} else {
return false;
}
}
Sehen Sie, was ich in der $ row Variable nach jeder Zeile Lesen erhalten:
Diese ?
Zeichen sein sollen Vokale mit Grafik Akzente auf ihnen.
Irgendwelche Hinweise drüben? Würde es funktionieren, wenn ich MS Excel für Windows verwende? Wie kann ich in der Laufzeit die exakte Kodierung der Datei erkennen und vor dem Lesen einstellen?
(Für jene spanischen Sprecher, erschrecken Sie nicht mit solchen schrecklichen medizinischen Sachen in diesen Texten;)).
gleiche Problem. Eine UTF8-codierte CSV-Datei importiert die Daten auf einem Server, aber nicht auf dem anderen. Habe meinen eigenen CSV-Reader geschrieben. –
FWIW, Sie können die Kodierung einer Datei nicht wirklich * kennen *, ohne es zu erfahren. Sie können raten, wenn Sie es lesen und entsprechend konvertieren, aber nichts ist so zuverlässig wie die Kodierung. – cmbuckley
Danke cbuckley. Was meinst du mit "convert entsprechend", versuche es zu erraten und frage den Benutzer, ob er den Import genehmigt? Und wenn nicht, versuchen Sie es mit anderen Kodierungen für den Ursprung? – ElPiter