PHP の中国語文字化け、Winodws と Linux で異なる方法で処理するにはどうすればよいですか?

WBOY
リリース: 2016-06-23 13:32:44
オリジナル
884 人が閲覧しました

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 ページの文字セットがオペレーティング システムの文字セットと同じである場合、ファイル名をトランスコードする必要はありません

PHP 用の一般的なテンプレートを開発します。システム セットを判断する必要がありますか?

はい、ユニバーサルなので、さまざまな環境に応じて対応する必要があります

問題をユーザーに任せることはできません

たとえば、中国語のファイル名に問題がある場合、単純に $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です

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート
私たちについて 免責事項 Sitemap
PHP中国語ウェブサイト:福祉オンライン PHP トレーニング,PHP 学習者の迅速な成長を支援します!