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

サーバ上にファイル名がUTF-8の漢字コードで作られたファイルがあります。
これをEUCベースのphpからfopenできずに困ってます。
何かうまい方法はないものでしょうか?

phpから英数字だけのファイル名にリネームする方法でも構いません。
ご存知の方、ご教示よろしくお願いします。

暫定的にcronでリネームするだけのshellを走らせてますが、スマートじゃなくて‥‥。

A 回答 (2件)

$baseEnc = mb_internal_encoding();



mb_internal_encoding('UTF-8');

// 実処理 fopen

mb_internal_encoding($baseEnc);


こんな感じでいけませんか?
    • good
    • 0
この回答へのお礼

回答ありがとうございました。
結局、EUCで処理をするのが前提な部分と、UTF-8のファイル名をfopenするのを1本のphpで実行するのは無理と判断しました。
断念して、ファイル名をUTF-8からasciiにリネームするだけの処理と、EUCで実際の処理をするのを分けることにしました

お礼日時:2012/01/23 10:27

mb_convert_encoding()しても無理でしょうか?



>暫定的にcronでリネームするだけのshellを走らせてます

りネームができるのであればそのロジックをそのまま援用すれば
開けるような気がしますが・・・

この回答への補足

$file = "ファイル名.txt";
$txt = fopen (mb_convert_encoding ($file, "UTF-8", "EUC-JP") , "rb");
とかでしょうか? これだと
failed to open stream: No such file or directory
が返ってきます。
urlencode()で指定できないか試してみましたが、こっちもダメでした。

リネームはexec()やsystem()つかってみましたが、PHP内部コードがEUCなのでコマンドライン上でUTF-8のファイル名を指定できなくて‥‥。

サーバとphpの内部コードが違うと苦労します。
以前は両方ともEUCだったので苦労しなかったのですがー。

補足日時:2012/01/06 16:30
    • good
    • 0
この回答へのお礼

回答ありがとうございました。
今回は断念して、ファイル名をUTF-8からasciiにリネームするだけの処理と、EUCで実際の処理をするのを分けることにしました。

お礼日時:2012/01/23 10:26

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