忍者ブログ

ぷれっくす

日々の何気ない小ネタで記事を書き続けて行くブログです。 ブログ説明書き換えました。2014/06/13

PHP覚書:ファイルのリネーム(rename)が文字化けして正常に処理できなかったとき

×

[PR]上記の広告は3ヶ月以上新規記事投稿のないブログに表示されています。新しい記事を書く事で広告が消えます。

コメント

ただいまコメントを受けつけておりません。

PHP覚書:ファイルのリネーム(rename)が文字化けして正常に処理できなかったとき


$name1 = "./dir/日本語1.txt"(ここはどこかのフォルダの何かしらのtxtファイルを読み込む形)";

(変数) ← ファイル名 日本語1を格納

$name2 = "./dir/(変数)_2.txt";

rename($name1 , $name2 );

上記の例のように 日本語1 というテキストファイルを

日本語1_2にリネームしたいという場合なのですが

ファイルを取得した時点で #?$%&1.txt といったような文字化けを起こしてしまい

日本語1という元のファイル名に_2を追加したいという場合

正常に日本語1を変数に格納できずうまく処理できないといった状態に陥りました。

そこで mb_convert_encoding 関数を使用してエンコードをかけるのですが

$hoge = mb_convert_encoding($name, "utf-8", "auto");

このとき、php.iniの設定を変更しておかないと

文字コードがわからなかったから変換できなかったというようなエラーを返されます

そこで、php.ini内の

;mbstring.language = Japanese
;mbstring.internal_encoding = EUC-JP
;mbstring.http_input = auto
;mbstring.http_output = SJIS
;mbstring.encoding_translation = Off
;mbstring.detect_order = auto
;mbstring.substitute_character = none
;mbstring.func_overload = 0

の左側の ; を削除して

mbstring.language = Japanese mbstring.internal_encoding = UTF-8 mbstring.http_input = auto mbstring.http_output = UTF-8 mbstring.encoding_translation = On mbstring.detect_order = auto mbstring.substitute_character = none mbstring.func_overload = 0

に変更したのち、apacheを再起動すればできるようになるはずです。

これはmySQLが文字化けしてしまう場合も有効です。


PR

コメント

プロフィール

HN:
えすた
性別:
非公開

P R