PHP を学ぶために wamp を使用してローカル サイトを構築しました。システムは Windows 8 で、WEB ページは次のとおりです。
エンコードですが、中国語のディレクトリを処理すると文字化けが発生します。インターネットで検索すると、
$dir=iconv('UTF-8','GB2312',$dir); を使用してディレクトリを中国語にデコードしてから、
$ を使用する必要があることがわかりました。 dir=iconv('GB2312','UTF-8',$dir); 逆エンコーディングが表示されます。
この方法は確かに実現可能です。
ところが、購入したWEB HOSTINGサーバーにページをアップロードすると文字化けが発生してしまいます
ただし、デコードが不要なWEB HOSTINGがLINUX環境の場合は文字化けは発生しません
。この違いがなぜ起こるのかわかりません。
私は PHP を初めて使用します。誰かがこの問題の理由を説明できますか?
それとも単にローカルマシン上のサイトが正しく設定されていないだけなのでしょうか?
GB2312 を GBK に変更してみてください。
Winodws GBK
Linux UTF-8
Web ページの文字セットがオペレーティング システムの文字セットと同じである場合、ファイル名をトランスコードする必要はありません
はい、ユニバーサルなので、さまざまな環境に応じて対応する必要があります
問題をユーザーに任せることはできません
たとえば、中国語のファイル名に問題がある場合、単純に $dir=iconv(' UTF-8','GB2312',$dir);
これを実行できます:
設定ファイルに書き込みます
define('APP_CHARSET', 'UTF-8');
define('OS_CHARSET', substr(PHP_OS, 0, 3) == 'WIN' ? 'GBK' : 'UTF-8'); このように $dir=iconv('UTF-8','GB2312',$dir); ( 'APP_CHARSET, OS_CHARSET, $dir);
は一般化されており、さらに
function lang(&$str) {
return $str = iconv('APP_CHARSET, OS_CHARSET, $str) }
; lang ($dir);
$path = lang($dir)
すべてOKです