CSVファイルの取り込み方法について悩んでいます

このQ&Aのポイント
  • CSVファイルをSJISで取り込もうとしていますが、EUCで表示されません。
  • mb_convert_encoding関数を使用してSJISからEUCに変換しようとしましたがうまくいきません。
  • CSVファイルを自分のサイトに取り込み保存してから使用する方法も考えています。
回答を見る
  • ベストアンサー

取り込みたいCSVファイルはSJIS、私のHPはEUC。

新規であるサイトからタブ区切りのCSVファイルを取り込もうと思っています。 CSVはhttp://sample.csvという形で公開されており、コードはSJISです。 私のHPはEUCで書いているので文字コードの違いで悩んでいます。 ■こんな形で取り込んでみました。 $data=file('http://sample.csv'); foreach($data as $new_data){ list($n1,$n2,$n3,$n4,$n5,$n6,$n7,$n8,$n9)=split("t",$new_data); echo $n1 . "<br>"; } ■解決案 この一行を様々な箇所に入れてみるのですがどこで使っても 取り込んだ$n1の日本語がEUCで表示されません。 $n1=mb_convert_encoding($n1,"EUC-JP","SJIS"); 出来れば取り込んだ時点全ての変数をEUCに変えたいんですが、 うまくいきません。 一旦CSVファイルを自分のサイトに取り込み保存するなどしてそれを使いまわす方がよいのでしょうか? 原因を考えるのですが行き詰っています。どなたかお力をお借りできればありがたいです。 (またこのPHP文章の場合CSVの行数が100行なら$n1が100行全て表示されてしまいます。上から5つだけ$n1を表示などもかのうでしょうか?)

noname#20805
noname#20805
  • PHP
  • 回答数2
  • ありがとう数1

質問者が選んだベストアンサー

  • ベストアンサー
  • BLUEPIXY
  • ベストアンサー率50% (3003/5914)
回答No.1

#実際に試してはいないのですが、こんな感じでどうでしょう $data=file('​http://sample.csv');​ foreach($data as $new_data){ $new_data = mb_convert_encoding($new_data, "EUC-JP", "SJIS"); list($n1, $n2, $n3,$n4,$n5,$n6,$n7,$n8,$n9)= explode("\t", $new_data); echo "$n1<br>"; }

その他の回答 (1)

  • BLUEPIXY
  • ベストアンサー率50% (3003/5914)
回答No.2

#1>$data=file('http://sample.csv'); なんかゴミが付いてきましたが、ここは元通りで・ $date=file('http://sample.csv');

noname#20805
質問者

お礼

解決しました。 もう全部自分のページをSJISにしなきゃいけないかとあきらめてたんですが助かりました!

関連するQ&A

  • $n1が100行全て表示されてしまいます。上から5つの表示だけにしたいが苦戦中。

    いつもお世話になっています。 新規であるサイトからタブ区切りのCSVファイルを取り込もうと思っています。 ■こんな形で取り込んでみました。 $data=file(';http://sample.csv'); foreach($data as $new_data){ $new_data=mb_convert_encoding($new_data,"EUC-JP","SJIS"); list($n1,$n2,$n3,$n4,$n5)=split("t",$new_data); echo $n1 . "<br>"; } ■質問 またこのPHP文章の場合CSVの行数が100行なら$n1が100行全て表示されてしまいます。上から5つだけや任意の行の$n1を表示なども可能でしょうか? どうしても解かりません、宜しくお願いします。

    • ベストアンサー
    • PHP
  • eucデータをsjisに変換できない。

    require './jcode.pl'; &jcode::convert(*name,'euc'); レンタルサーバーのMySQLがeucでしかデータを受け取らない ので以上のような形にしてSQL文を投げました。 結果、htmlでsjisにして吐き出す際に取り出すデータもeucで表示されるため変換できないかと悩んでいます。 while( @row = $sth->fetchrow_array() ) { 1jcode::convert(\$row,'sjis'.'euc'); 2jcode::convert(\$row,'sjis'); 3jcode::convert($row,'sjis'.'euc'); と複数試しましたがダメでした。 Perlのバージョンにより違いがあるので、 全ての先頭に&付けて再度試しましたがうまくエンコードできません。 どなたか解決方法をご存知の方、ご教授ください。

  • スマートに euc ページを sjis にする方法

    euc でかかれた htmlページを sjis にしたいのですが、 私が思いつく方法だと、open で開けて一行一行読み込み jcode::convert(\$input, 'sjis'); とかやって・・・それをまた、別のファイルに 一行一行保存・・・とかくらいしか思いつかないの ですが、もうちょっとマシな方法はないものでしょうか。

    • ベストアンサー
    • Perl
  • utf-8のマシンでsjisのデータファイルを読込み、eucでファイルに出力する方法

    utf-8のLinuxマシンで、sjis(改行コードCR+LF)のデータファイルを読込み、euc-jp(改行コードLF)でファイルに出力したいのですが、どのようにすればよいでしょうか。プログラム実行前後に入出力ファイルを直接コード変換することは考えておらず、全て一つのプログラム内でやりたいと考えています。 &jcode'convertで変換するのかなと思っているのですが、読込み時・書き込み時のどちらでやるべきなのか、あるいは両方やるべきなのか分かりません。データには、「・」「I,II」などの特殊文字(?)が含まれているので、それらの文字で問題が起きないかなどもちょっと心配です。 また、&jcode'convertでeucに変換すれば、改行コードも一緒にCR+LFからLFに変換されるものでしょうか。 文字コードのことがよく分かっていないので、的外れな質問になっているかもしれませんが、ご教示願います。

    • ベストアンサー
    • Perl
  • SJIS→EUCに送っても文字化けしない

    htmlは、SJISで作っています。 PHPは、EUCで作っています。 普通は文字化けをするため、mb_convert_encoding関数を用いますが、 なぜか、この関数を使わなくても、文字化けしません。 友人は、有り得ないと言います。 事実、友人PCではmb_convert_encoding関数で文字化けを直してました。 私も友人に同感で、SJIS→SJISやEUC→EUCなら文字化けしないけど、文字コードが違うのです。違うから、mb_convert_encoding関数を使うと、思っているのですが‥‥ 設定が違うのかと思い、友人の、php.iniなどいくつかのファイルを私のPCに上書きしてもらいましたが、変わりませんでした。 こういうことってあるのでしょうか? 文字化けしないなら、mb_convert_encoding関数を使わなくて良いので、楽だと思いましたが・・・ 何かの不具合なら、いざ完成した時、またmb_convert_encoding関数をいれる手間がありますし、どうしようか迷っています。 本には、「文字化けしない場合もある」という記述は一言も書いてありませんでした。 逆に、「文字化けするからmb_convert_encoding関数を用いる」と大きく書いてあるぐらいです。 何かの設定なのでしょうか? ソフトのバージョンも、同じでした。不思議です。

    • ベストアンサー
    • PHP
  • 第2水準のSJISをEUCに変換するには。

     初めて質問させていただきます。  あるファイルのSJISの漢字を  &jcode::convert(\$list[13],"euc","sjis", "z"); でEUCに変換したのですが、POSTGRACEQLのINSERT実行時、第2水準の漢字を使用しているレコードでINVALID EUC_JPというエラーになってしまいます。  第2水準の漢字を変換する方法があれば教えてください。  お願いします。

    • ベストアンサー
    • CGI
  • CSV読込(fgetcsv関数)で「手」が出ない…

    1マスに「手」と書いたCSV(文字コードSJIS)を fgetcsv関数(PHPファイルはEUC-JP)で取得し、 取得情報を1行づつ mb_convert_encoding($data, "EUC-JP", "SJIS"); でエンコーディングしたのですが、「手」だけを書いたマスのみ読込めません。 他の文字を書いたマスは正しく読込まれています。 こういう事象に陥った方おられませんでしょうか? また解決策をご存知の方がおられましたらご教授頂けないでしょうか? 宜しくお願いします。

    • ベストアンサー
    • PHP
  • PHP,MYSQLで検索が出来ません。sjis→ euc→sjis。

    apache 1.3.34 mysql 4.0.26 php 4.4.2 で運用しています。 HTML 入力 sjis → DATA sjis →読み出し sjis で運用していたのですが、文字化けのおかげで データを EUC にしました。 HTML(入力)sjis→EUC→HTML(読み出し)sjis に変更しました。 参考書を頼りに、変換しながらやっているのですが データが漢字(ひらがなも同じかも)の場合に検索が出来ません **他はうまくいっています***入力、表示ともに 入力時 function cnv_dbstr($string) { $string = htmlspecialchars($string); $string = mb_convert_encoding($string, "EUC-JP", "SJIS"); if (!get_magic_quotes_gpc()) { $string = addslashes($string); } return $string; } 出力時 function cnv_dispstr($string) { $string = mb_convert_encoding($string, "SJIS", "EUC-JP"); $string =nl2br($string); return $string; } 今までは下記のsqlで出来ていたのですが、この福岡市を cnv_dbstr(福岡市) にしてみたりしたのですが検索が出来なくて データが出てきません。 $sql = "select * from mem where area = 1 and cate = '福岡市'" ; $rst = mysql_query($sql, $con); どなたか、アドバイス宜しくお願いいたします。

    • ベストアンサー
    • MySQL
  • データ型textのcsvインポート

    環境 Apache2 PostgreSQL8 PHP5 EUC-JP PostgreSQLのデータ型textにて入力したデータをcsvダウンロードし、 再度csvをアップロードし取り込むプログラムを作成しております。 データ型textなので改行コードや長文のデータがあります。 csvファイルにてダウンロードする際、 \nを↑、\rをブランクに変換してcsvファイルを作成し、 csvファイルをアップロードする際は、 mb_convert_encodingにてcsvファイルのsjisをeuc-jpに変換をしております。 ほとんどのデータが問題なくアップロードできるのですが、 syntax error at or near "," というエラーが出る場合があります。 これはどのような場合に出るのでしょうか? 抽象的な質問かもしれませんが、よろしくお願いします。

    • ベストアンサー
    • PHP
  • CSVファイルをEUCで保存したい

    CSVでファイルを作成しました。 そのファイルを文字コードをEUCで新たに保存することはできるのでしょうか。 宜しくお願い致します。

専門家に質問してみよう