- 締切済み
scandir関数取得結果の文字化け
PHPスクリプトでローカルのディレクトリ名を 取得するプログラムを下記のとおり作成しました。 <?php $list = scandir($rootdir); foreach($list as $dirname){ print($dirname."<br>"); } ?> 取得結果は下記のとおりで 日本語が文字化けてしまいます。 010_�^�C_�ߋ��̗� 020_�^�C_�ߋ��̗��Q mb_convert_encoding($dirname, "UTF-8", "auto"); を行えば文字化けせずに出力できるのですが、 他にwindows環境でこの文字化けに対する回避方法はないのでしょうか? ご教授願います。 [環境] WindwosXP Pro SP3 PHP Version 5.2.9-2 [表示ページの文字コード] <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> [php.iniのmbstring設定] mbstring.language = Japanese mbstring.internal_encoding = UTF-8 mbstring.http_input = pass mbstring.http_output = pass mbstring.encoding_translation = Off mbstring.detect_order = SJIS,EUC-JP,JIS,UTF-8,ASCII mbstring.substitute_character = none; mbstring.func_overload = 0 以上よろしくお願いします。
- みんなの回答 (1)
- 専門家の回答
みんなの回答
- yambejp
- ベストアンサー率51% (3827/7415)
そもそもが・・・・ httpレベルでデータを取得するのに、日本語のディレクトリや ファイル名はを使用するという考え方がNG すべて英数(および一部記号)に統一して運用しないかぎり、 一生トラブルに悩まされると思いますよ
補足
そう言われれば今までも悩まされた経験が… ということはやはりmb_convert_encoding以外の 回避方法は無いのでしょうか? 重ね重ね質問になってしまい恐縮ですが 打開案としてはXMLファイル等の別ファイルに日本語データを保持し 読み込むといった方法が妥当でしょうか?