質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.50%
CSV

CSV(Comma-Separated Values)はコンマで区切られた明白なテキスト値のリストです。もしくは、そのフォーマットでひとつ以上のリストを含むファイルを指します。

PHP

PHPは、Webサイト構築に特化して開発されたプログラミング言語です。大きな特徴のひとつは、HTMLに直接プログラムを埋め込むことができるという点です。PHPを用いることで、HTMLを動的コンテンツとして出力できます。HTMLがそのままブラウザに表示されるのに対し、PHPプログラムはサーバ側で実行された結果がブラウザに表示されるため、PHPスクリプトは「サーバサイドスクリプト」と呼ばれています。

Q&A

解決済

2回答

3674閲覧

<PHP>CSV読み込み表示文字化け

kanngaeru

総合スコア14

CSV

CSV(Comma-Separated Values)はコンマで区切られた明白なテキスト値のリストです。もしくは、そのフォーマットでひとつ以上のリストを含むファイルを指します。

PHP

PHPは、Webサイト構築に特化して開発されたプログラミング言語です。大きな特徴のひとつは、HTMLに直接プログラムを埋め込むことができるという点です。PHPを用いることで、HTMLを動的コンテンツとして出力できます。HTMLがそのままブラウザに表示されるのに対し、PHPプログラムはサーバ側で実行された結果がブラウザに表示されるため、PHPスクリプトは「サーバサイドスクリプト」と呼ばれています。

0グッド

2クリップ

投稿2017/10/18 12:44

PHPでCSV読み込み表示をしたいのですが、下記のように文字化けしてしまいます。イメージ説明

<?php setlocale(LC_ALL,'ja_JP.UTF-8'); $csv = array(); $file = 'aomori2.csv'; //エンコーディング処理 $data = file_get_contents($file); // string型に変更 $data = mb_convert_encoding($data, 'UTF-8', 'sjis-win'); //この関数を通すことで文字化けが解消される //初期化・一時ファイル作成 $temp = tmpfile(); $csv = array(); fwrite($temp, $data); //$tempファイルに、$dataの内容を書き込む。 rewind($temp); //ファイルポインタを先頭の位置に戻す while (($data = fgetcsv($temp, 0, ",")) !== FALSE) { $data = implode(",", $data); //一行づつ、配列を","で連結して、文字列として返す $csv[] = htmlentities($data); } $result = array(); //多次元配列を実現して、必要なデータだけを取り出せる形にする $table = ''; for ($i = 0; $i < 30; $i++){ //表示件数を指定 $result[$i] = explode(",", $csv[$i]); $table .= '<tr>'; $table .= '<td>' .$result[$i][2]. '</td>'; //郵便番号を格納 for ($k = 6; $k <= 8; $k++){ $village[$i][$k] = $result[$i][$k]; //住所情報を格納 $table .= '<td>' .$village[$i][$k]. '</td>'; } $table .= '</tr>' ; } fclose($temp); ?> <!DOCTYPE html> <html lang="ja"> <head> <meta charset="UTF-8"> <title>課題</title> <style type="text/css"> .table { border-collapse: collapse; } .table th { background-color: #cccccc; } .table td { padding: 4px; } .t-head td { font-weight: bold; } </style> </head> <body> <p>以下にファイルから読み込んだ住所データを表示</p> <p>住所データ(青森県)</p> <table class="table" border=1> <tr class="t-head"> <td>郵便番号</td> <td>都道府県</td> <td>市町村</td> <td>町域</td> </tr> <?php echo $table ?> </table> </body> </html>

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

yuki-saito

2017/10/18 23:54

動作環境はWindowsということですよね?ファイルを読んだ時点で化けているのかブラウザに表示した時点で化けているのかは確認できていますか?
kanngaeru

2017/10/20 14:04

返信遅れてしまい申し訳ありません。特殊なエディタの問題でした!無事動きました。ありがとうございました。
guest

回答2

0

ベストアンサー

肝心の自分自身のページ保存方法がutf8になっていないのでは?
エディタの設定をみなおしてください

またページのなるべく先頭の方にheader()関数で

PHP

1header("Content-Type:download;charset=utf8");

のような宣言と、HTMLのhead内に

HTML

1<meta http-equiv="Content-Type" content="text/html; charset=utf-8">

のような記述を入れておくと精度向上が期待できます

あとはよくわかりませんがcsvは本当にshift-jisなのでしょうか

mb_convert_encoding($data, 'UTF-8', 'sjis-win')

の設定がただしいかも再確認してください

投稿2017/10/19 00:58

編集2017/10/19 01:00
yambejp

総合スコア114583

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

kanngaeru

2017/10/20 14:06

ご丁寧にありがとございました! 特殊なエディタの問題でした。無事に動きました。
guest

0

やはりファイル自体の文字コードだったんですね^^
きっとそうだと思っていたのでよかったです。

投稿2017/10/21 00:39

yuki-saito

総合スコア928

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.50%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問