PHP 5.3fgetcsv
関数を使用すると、エンコーディングの問題によりいくつかの問題が発生します。このファイルには、グラフィックアクセントá、é、íïなどのスペイン語の「特別な」ラテン文字が含まれていることに注意してください。
MS 2008 forMacExcelファイルにある構造化データをエクスポートするCSVファイルを取得します。
Mac OS XTextEdit
アプリケーションで開くと、すべてが完璧になっているようです。
しかし、PHPプログラムにアクセスして、そのfgetcsv PHP関数を使用してCSVを読み取ろうとすると、文字セットが正しく読み取られません。
/**
* @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));
}
ご覧のとおり、setlocale
toも使ってみましたes_ES.UTF-8
。しかし、それを機能させるものは何もありません。
読む部分はここにあります:
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;
}
}
各行を読み取った後、$row変数に何が表示されるかを確認してください。
これらの?
文字は、グラフィックのアクセントが付いた母音であると想定されています。
あそこに何か手がかりはありますか?MS Excel for Windowsを使用した場合、機能しますか?実行時にファイルの正確なエンコーディングを知り、それを読み取る前に設定するにはどうすればよいですか?
(それらのスペイン語話者にとって、それらのテキストのそのようなひどい医療のものに恐れをなさないでください;))。