PHPで日本語ファイル名をアップロードされる時の文字コードについて(Shit-jisとSJIS-winの違い)
前提
Windowsで使われている文字コードは、Shift_JISではなくSJIS-win
Q1, 何が違うの?
Shift_JISが基本、SJIS-winはマイクロソフトが拡張した文字コード。
Q2, Shift_JISだと、何が問題?
1 2 3 4 5 |
// 機種依存文字(①とかⅠとか)を含む文字列(ファイル名)が???みたいに変換されてしまう。 $upload_filename = mb_convert_encoding($upload_filename, 'Shift-jis', 'auto'); // SJIS-winなら、機種依存文字(①とかⅠとか)を含む文字列(ファイル名)でもOK! $upload_filename = mb_convert_encoding($upload_filename, 'SJIS-win', 'auto'); |
結論
シフトJISを使いたい場合には、文字コードの指定はSJIS-winを使おう!(Shift-jisじゃなくてね!)