アプリ版:「スタンプのみでお礼する」機能のリリースについて

ある事情で、CSVファイルをリンクしてブラウザ上で表示しなければならなくなりました。
CSVファイルはPHPから自動で生成されます。

このCSVファイルが「Shift-JIS」の文字コードなのですが
WEBサイトのHTMLは「UTF-8」で記載されています。

このため、あるページからリンク先のCSVファイルに飛んだ時に、文字化けが発生しています。
ブラウザの文字コードを変えれば、表示はできますが
実際に運用される方々は、文字コードを変えるなどに気がついてはいただけません。


そこでCSVをリンクするHTMLから、リンク先のCSVを「Shift-JIS」で開くように文字コードを指定するような事はできないでしょうか?
フリーのPHPプログラムなどを要する事で実現できるなら、それでも構いません。

よろしくおねがいします。

A 回答 (4件)

もちろんPHPでもできますが、ある程度ロジックを組む必要があるので・・・


この場合なら、csv専用のディレクトリ(フォルダ)を作って、
htaccsessでサーバーから自動発行される文字コードを指定してやるのが最も容易です。
PHPが使えるなら多分使えると思います。

http://www.koikikukan.com/archives/2004/11/23-14 …

ここを参考にしつつ、記述を

AddDefaultCharset UTF-8

じゃなく

AddDefaultCharset Shift-JIS
    • good
    • 0
この回答へのお礼

なるほど、サーバー側で設定しておけば気にしなくていいですね。

私は直接サーバー設定をいじれない(権限が無い)ので、管理者に問い合わせてみます。

ありがとうございます。

お礼日時:2010/12/15 10:39

>CSVそのものにもヘッダってあるんですか?



ファイルではなくHTTPの応答にはすべてヘッダがあります。Content-Typeヘッダはほぼ必須。

ただ、.htaccessなどでApacheサーバの設定(AddType等)が効くのは、csvファイルをサーバ上に置いてそれを参照する場合です。

今回は、ファイルをPHPで動的に生成する場合なので、PHPでヘッダを生成します。

>一度プログラムを解析してみようと思います。

header("Content-Type: text/csv");
ないし
header("Content-Type: text/plain");
ないしそれに近い物があるはず。それを
header("Content-Type: text/csv; charset=Shift_JIS");
ないし
header("Content-Type: text/plain; charset=Shift_JIS");
にします。
    • good
    • 1

Shift-JISではなく、Shify_JISです。


<a href="hogehoge.csv" charset="Shift_JIS">

php側から送出されるデータのヘッダ部分にcontent-typeとchersetを加える。
サーバーの設定は
AddType "text/plain; charset=Shift_JIS" .csv
など、
MIMEタイプと文字コード情報 ( http://www.kanzaki.com/docs/sw/http-header.html# … )

また、phpでも、ヘッダーに
header( 'Content-Type: text/plain; charset=Shift_JIS' );

とか、普通に対処すればよいはずです。
    • good
    • 0

PHPでCSVファイルを生成しているときにヘッダ出力はどうしてますか?



Content-Type: text/csv

であれば、

Content-Type: text/csv; charset=Shift_JIS

にすればいいと思います。ただ、text/csv であればExcelがインストールされているPCであればExcelで開こうとするので文字コードの問題は起こりません。ExcelがインストールされているPCでもブラウザで表示したければ、

Content-Type: text/plain; charset=Shift_JIS

にします。
    • good
    • 0
この回答へのお礼

CSVそのものにもヘッダってあるんですか?
ヘッダがあるなら、そこにファイルの文字コードを書けば済みそうですね。

ただ、CSV書き出しのプログラムは、前任の方が作ったものなのでよくわかりません(泣)
一度プログラムを解析してみようと思います。

ありがとうございます。

お礼日時:2010/12/15 10:31

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!