【PHP】 日本語表記が消える不具合対処

プログラム

ファイル名をデータベースに登録する時に、日本語表記のファイル名だけ、ファイル名の部分が無くなり、拡張子のみになってしまいました。

不具合内容

日本語表記の部分は削除されてしまう
例:『日本語.jpg』をデータベースに登録しようとしたら、『.jpg』というファイル名になってしまった。『english.jpg』という英語の表記のファイル名だと大丈夫。

下記がコードの抜粋になります。

$path = 'C://test.com/日本語.php';
$filename = basename($path);
//以後、データベースの登録

basenameというファイル名だけを抽出する関数の不具合らしいです。

解決する方法は、下記のように上部にsetlocale(LC_ALL, ‘ja_JP.UTF-8’);というコードを加えます。

setlocale(LC_ALL, 'ja_JP.UTF-8');

$path = 'C://test.com/日本語.php';
$filename = basename($path);
//以後、データベースの登録

setlocaleはPHPの環境を国の情報(文字、日時など)を変更するものです。上記のコードでは日本、UTF-8の環境に変更しています。

詳しくは下記の公式サイトで確認して下さい。

 

プログラム
スポンサーリンク
シェアする
フォローする

コメント

タイトルとURLをコピーしました