php_PHP チュートリアルでファイルを読み取るときに文字化けが発生する問題

WBOY
リリース: 2016-07-21 15:41:06
オリジナル
909 人が閲覧しました

オンラインの解決策には、クロール後に iconv() を使用してトランスコードするように記載されています。それを読んだ後、私は何かが間違っていると感じました。1 つは、iconv ライブラリがコンパイルされていない可能性があることです。そして、より大きな問題は、エンコーディングがストリーム変換に関連していることです (iconv が使用されている場合、PHP は実際にコードを 2 回変換します: stream -> UTF-8 -> GB2312): この忙しい作業は無駄ではありませんか?

私は PHP のドキュメントを注意深く読みました (みんながどのようにコードを書いているかはわかりませんが、ドキュメントは非常に明確です)。fopen() と file_get_contents() については、「デフォルトは UTF-8 ですが、ユーザーは」と述べています。 Unicode セマンティクスが有効な場合、読み取られたデータのデフォルトのエンコーディングは UTF-8 です。カスタム コンテキストを作成するか、stream_default_encoding () を使用してデフォルトを変更することで、別のエンコーディングを指定できます。そこで、 stream_default_encoding('gb2312'); を使用してテストしました。 しかし、この関数は存在しませんか? ! php6のみ対応しているようです。ただし、確実なパスはなく、使用できる「ユーザー定義のコンテキスト属性」もあります。

ドキュメントをもっと注意深く読んだ後、私は最終的にこの問題を解決しました:

コードをコピーします コードは次のとおりです:

//これはファイルストリーム(file. ) ネットワークアクセスの場合、http
$opts = array('file' => array('encoding' => 'gb2312'));
$ctxt = stream_context_create($opts); (ファイル名、FILE_TEXT、$ctxt );

http://www.bkjia.com/PHPjc/321251.html

www.bkjia.comtru​​ehttp://www.bkjia.com/PHPjc/321251.html技術記事オンラインの解決策には、クロール後に iconv() を使用してトランスコードするように記載されています。読んだ後、何かが間違っていると感じました。1 つは、iconv ライブラリがコンパイルされていない可能性があることです。そして、より大きな問題は、エンコーディングがストリーム変換に関連していることです (if.​​..)
ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
最新の問題
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート