php 日本語のファイル名でファイル出力
2011/06/24
PHPでファイル出力する際にファイル名を日本語にしたら文字化けを起こした。
「ファイル名」を「SJIS」に変換すればOK。
めも
DBにあるデータをファイルに出力したかった。
これ自体は特に問題もなく出力できたんだけど、ファイル名に日本語を使おうとして問題発生。
WindowsはSJIS
文字化けをして真っ先に疑うのはやはり…文字コード。
基本的にUTF-8で処理をしていたので「それ(UTF-8)が原因か?」と。
調べると…Windowsの文字コードというのか、内部エンコーディングというのかは知らないけどそれが「SJIS」らしい。
ということで「ファイル名だけをSJISにエンコーディングすりゃいいじゃん」と。
下記のような感じ。
mb_convert_encoding([ファイルのパス], "SJIS", "auto");
ファイル出力の一連のコード
- $localPath = "日本語ファイル名.html";
- $localPath = mb_convert_encoding($localPath, "SJIS", "auto");
- $data = "ファイルに出力したい内容";
- $rsc = fopen($localPath, "w");
- flock($rsc, LOCK_EX);
- fwrite($rsc, $data);
- flock($rsc, LOCK_UN);
- fclose($rsc);