php 日本語のファイル名でファイル出力

2011/06/24

PHPでファイル出力する際にファイル名を日本語にしたら文字化けを起こした。

「ファイル名」を「SJIS」に変換すればOK。

めも

DBにあるデータをファイルに出力したかった。
これ自体は特に問題もなく出力できたんだけど、ファイル名に日本語を使おうとして問題発生。

WindowsはSJIS

文字化けをして真っ先に疑うのはやはり…文字コード。
基本的にUTF-8で処理をしていたので「それ(UTF-8)が原因か?」と。

調べると…Windowsの文字コードというのか、内部エンコーディングというのかは知らないけどそれが「SJIS」らしい。

ということで「ファイル名だけをSJISにエンコーディングすりゃいいじゃん」と。
下記のような感じ。

mb_convert_encoding([ファイルのパス], "SJIS", "auto");

ファイル出力の一連のコード

  1. $localPath = "日本語ファイル名.html";
  2. $localPath = mb_convert_encoding($localPath, "SJIS", "auto");
  3.  
  4. $data = "ファイルに出力したい内容";
  5.  
  6. $rsc = fopen($localPath, "w");
  7. flock($rsc, LOCK_EX);
  8. fwrite($rsc, $data);
  9. flock($rsc, LOCK_UN);
  10. fclose($rsc);

新着(ニュース関連以外)

2018-07-26
年賀状で「新春」とか書くけど・・・何故なんだろうと8月を目前にした今、疑問に思った。
2018-05-16
PHPで画像のヘッダ情報(?)の「Orientation」を元に画像回転させたい。
2018-03-05
Android Studioをインストール。エミュレータを軽くするトコまで終わらせたかったけど、挫折した。
2018-02-23
プッシュ通知について調べてた時にでてきたServiceWorker。そのServiceWorkerについてのメモ。
2017-12-13
jqueryで取得したDOM要素をオブジェクトじゃなくて、配列で受け取りたい