CSVをインポートしようとすると「文字コードをご確認ください」とエラーメッセージがでてしまいます。挙動しては正しいのですが
$detect_order = 'ASCII,JIS,UTF-8,CP51932,SJIS-win';
に追加するべき文字コードはございますか?
こちら
を参考に実装いたしました。
PHP
1/* 文字コードを変換してファイルを置換 */ 2 $tmp_name = $_FILES['csvfile']['tmp_name']; 3 $detect_order = 'ASCII,JIS,UTF-8,CP51932,SJIS-win'; 4 setlocale(LC_ALL, 'ja_JP.UTF-8'); 5 6 $buffer = file_get_contents($tmp_name); 7 if (!$encoding = mb_detect_encoding($buffer, $detect_order, true)) { 8 // 文字コードの自動判定に失敗 9 unset($buffer); 10 throw new Exception('文字コードをご確認ください'); 11 } 12 file_put_contents($tmp_name, mb_convert_encoding($buffer, 'UTF-8', $encoding));
###補足
Coteditorで開き、エンコーディングを確認すると
Windows,DOSとなっています。
###追記
PHP
1$detect_order = 'ASCII,SJIS,JIS,UTF-8,CP51932,SJIS-win'; 2 setlocale(LC_ALL, 'ja_JP.UTF-8'); 3 4 $buffer = file_get_contents($tmp_name); 5 debug(mb_detect_encoding($buffer)); 6 //出力結果 SJIS
でした。しかし、まだ「文字コードをご確認ください」とエラーが出てきてしまいます。
###追記
OS:macOS Sierra
1.windows→Macへエクセルファイルをメール送信
2.一旦、テキストエディタで開く(文字コード:Windows,DOSと認識)
3,アップロード
4.文字コードエラー
回答3件
あなたの回答
tips
プレビュー