FuelPHP+Xampp or CentOS 日本語ファイル名を取得すると日本語が消える
Localeの「ja-JP」と「ja_JP」が問題っぽい
作成日:2020-11-26, 更新日:2023-04-06
経緯
基本処理
1.「ファイル:foo.jpg」をup
2.「1」のファイルを「hoge.jpg」にリネーム
ということをしていた。
日本語のファイル名でエラー
日本語のファイル名の場合、エラーにならない場合もあるが、エラーになる場合もあった。
1.日本語を含むファイル名「ほげほげ1.jpg」のファイルをup。
2.「1」のファイルを「hoge1.jpg」にリネーム
3.エラーになったり、ならなかったり。
エラーログの確認
・「1」のファイル名を取得すると「ほげほげ1.jpg」ではなく「1.jpg」となっている。
→「1.jpg」を「hoge1.jpg」にリネームしようとするけど「1.jpg」が見つからない・・・でエラー。
原因
Localeの設定が問題っぽい。
▼FuelPHP側の「app/config/config.php」の中
・Localeを「ja-JP」ではなく「ja_JP」に変更
「ja-JP」にしていた理由
1.Xamppで作業をしていたときに「en_US」が無いってWARNINGが出てくる
2.色々と調べて「app/config/config.php」の「Locale」を「en_US」を「ja_JP」に修正
3.「ja_JP」が無いってWARNINGが出てくる
4.Windows側の「C:\Windows\System32\driver」の下にあるのは「ja-JP」なので、「app/config/config.php」の「Locale」を「ja_JP」を「ja-JP」に修正
5.CentOSのサーバにそのままup
6.CentOSの方は「ja-JP」が無く「ja_JP」にしなくちゃいけなかったらしい
「ja-JP」と「ja_JP」について
RFC 1766に従っている「ja-JP」が正しいけどUNIXやJavaなどでは「ja_JP」で表記され、それがそのまま慣習的に使われているっぽい
※参照:ja_JP.eucJPのようなロケールの書き方についての解説
Windows側はRFC 1766に従い、CentOS側は従っていない・・・ってのが問題