#HTML 文字化けしたコードが PHP ページに表示されるのはなぜですか?
#1. PHP Web ページのエンコード エラー;
gb2312 エンコードを使用する場合、PHP はヘッダー ("Content-Type: text/html; charset=gb2312") を出力し、それを静的ページに追加し、すべてのエンコード形式を設定する必要があります。ファイルは ANSI です。メモ帳で開き、選択したエンコーディングとして保存できます。ANSI の場合は、ソース ファイルを上書きします。 utf-8 エンコーディングを使用したい場合、php はヘッダー ("Content-Type: text/html; charset=utf-8") を出力し、静的ページとエンコーディングを追加する必要があります。すべてのファイルの形式は utf -8 です。 utf-8 で保存するのは少し面倒かもしれません。通常、utf-8 ファイルは先頭に BOM が付いています。セッションを使用すると問題が発生します。editplus を使用して保存できます。editplus で [ツール] -> [編集] に移動します。パラメータの選択 -> ファイル -> UTF-8 署名で、常に削除を選択し、保存して BOM 情報を削除します。 php 自体は Unicode ではないため、すべての substr およびその他の関数を mb_substr (mbstring 拡張機能をインストールする必要があります) に変更するか、iconv を使用してトランスコードする必要があります。2. MySQL エンコーディングは PHP エンコーディングと一致しません;
解決策: mysql 設定ファイル my.ini または my.cnf、mysql を変更します。最も使いやすい utf8 エンコーディング [mysql]default-character-set=utf8 [mysqld]default-character-set=utf8default-storage-engine=MyISAM [mysqld] の下に追加します:default-collation=utf8_bin init_connect='SET NAMES utf8' データベース操作を実行する必要がある PHP プログラムの前に mysql_query("set names 'encoding'"); を追加します。エンコーディングは PHP エンコーディングと一致します。PHP エンコーディングが gb2312 の場合、 mysql エンコードは gb2312、utf-8 の場合 mysql エンコードは utf8 なので、データの挿入や取得時に文字化けが発生しません3. PHP とオペレーティング システムのエンコード矛盾しています。
Warning: move_uploaded_file()[function.move-uploaded-file]:failed to open stream: Invalid argument in ... Warning: move_uploaded_file()[function.move-uploaded-file]:Unable to move '' to '' in ... Warning: filesize() [function.filesize]: stat failed for ... in ... Warning: readfile() [function.readfile]: failed to open stream: Invalid argument in ..Linux 環境で gb2312 エンコーディングを使用していますがこれらのエラーは発生しませんが、保存したファイル名が文字化けし、ファイルを読み込むことができなくなります。この場合、まずオペレーティング システムが認識するエンコーディングにパラメータを変換することができます。エンコーディングの変換には、mb_convert_encoding (文字列) を使用できます。 、新しいエンコード、元のエンコード)またはiconv(元のエンコード、新しいエンコード、文字列)を使用すると、処理後に保存されたファイル名が文字化けせず、ファイルを正常に読み取ることができ、中国語名のファイルのアップロードとダウンロードを実現できます。 実際には、より良い解決策があります。それは、システムから完全に分離することです。これにより、システムのエンコーディングを考慮する必要がなくなります。ファイル名として文字と数字だけを並べたものを生成し、元の漢字を含むファイル名をデータベースに保存しておくと、move_uploaded_file()を呼び出す際に問題なくダウンロードできます。ファイル名を元の漢字名に変更します。 中国語名。ダウンロードを実装するコードは次のとおりです。
header("Pragma: public"); header("Expires: 0"); header("Cache-Component: must-revalidate, post-check=0, pre-check=0"); header("Content-type: $file_type"); header("Content-Length: $file_size"); header("Content-Disposition: attachment; filename=\"$file_name\""); header("Content-Transfer-Encoding: binary"); readfile($file_path);$file_type はファイルの種類、$file_name は元の名前、$file_path はサービス上に保存されたファイルのアドレスです。
推奨チュートリアル: 「
PHP チュートリアル 」
以上がPHP ページで HTML が文字化けして表示されるのはなぜですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。