ホームページ php教程 php手册 PHPにおける中国語文字化けの解決策のまとめと分析

PHPにおける中国語文字化けの解決策のまとめと分析

Jun 13, 2016 pm 12:22 PM
php 1つ そして 中国語 文字化け 分析する 方法 マッチ 要約する 書類 コーディング ウェブページ 解決する

1. 1 つ目は、PHP Web ページのエンコーディングです
1。gb2312 エンコーディングを使用する場合は、php ファイル自体のエンコーディングと Web ページのエンコーディングが一致している必要があります。ヘッダーを出力します: header(“Content-Type: text /html; charset=gb2312″)、すべてのファイルのエンコード形式は ANSI であり、メモ帳で開き、ソース ファイルを上書きして、名前を付けて保存し、エンコードを選択できます。
b. utf-8 エンコードを使用する場合、php はヘッダーを出力する必要があります: header(“Content-Type: text/html; charset=utf-8”)、
3. PHP はオペレーティングシステムに関係します。
Windows と Linux ではエンコーディングが異なります。Windows 環境で PHP 関数を呼び出す際、パラメーターが utf-8 エンコーディングであると、move_uploaded_file() などのエラーが発生します。 、 filesize() 、 readfile() など。これらの関数は、アップロードとダウンロードの処理時によく使用されます。呼び出し時に次のエラーが発生する場合があります: 警告: move_uploaded_file()[function.move-uploaded-file]: に失敗しました。オープン ストリーム : …
の引数が無効です。警告: move_uploaded_file()[function.move-uploaded-file]:… で ” を ” に移動できません。
警告: filesize() [function.filesize]: stat が失敗しました… in …
警告: readfile() [function.readfile]: ストリームを開けませんでした: .. の引数が無効です。
これらのエラーは、Linux 環境で gb2312 エンコーディングを使用する場合には発生しませんが、保存後のファイル名はこの場合、まずオペレーティング システムが認識するエンコードに変換することができます。 mb_convert_encoding (文字列、新しいエンコード、元のエンコード) を使用できます。または iconv (元のエンコード、新しいエンコード、文字列) を保存すると、保存されたファイル名は文字化けせず、正常に読み込むことができ、中国語名のファイルのアップロードとダウンロードが可能になります。
実際には、より良い解決策があります。それは、システムから完全に切断することです。そのため、システムのエンコードを考慮する必要はありません。ファイル名として文字と数字のみのシーケンスを生成し、データベースに漢字を含む元の名前を保存することができます。この方法では、ダウンロード時に move_uploaded_file() を呼び出すときに問題は発生しません。ファイル名を中国語の文字を含む元の名前に変更します。ダウンロードを実装するコードは次のとおりです。
header(”Pragma: public”)
header(”Expires: 0″); 0、pre -check=0″);
header(”Content-type: $file_type”);
header(”Content-Length: $file_size”); Attachment; filename =”$file_name”);
header(”Content-Transfer-Encoding: binary”);
readfile($file_path); $file_type はファイルのタイプです。元の名前、$file_path はサービスに保存されたファイルのアドレスです。

4.文字化けが発生する原因をまとめてみましょう

文字化けが発生する原因は大きく分けて 2 つあります。 1 つ目は、エンコード (文字セット) の設定が間違っているため、ブラウザが間違ったエンコードで解析してしまうことです。 2 つ目は、ファイルが間違ったエンコードで開かれて保存された場合です。たとえば、テキスト ファイルは元々 GB2312 でエンコードされていたのに、UTF-8 エンコードで開かれて保存されました。上記の文字化けしたコードの問題を解決するには、まず開発のどの側面にエンコーディングが関係しているかを知る必要があります。
1. ファイル エンコーディング: ページ ファイル (.html、.php など) 自体が保存されるエンコーディングを指します。 。 Notepad と Dreamweaver では、ページを開くときにファイルのエンコーディングが自動的に認識されるため、問題は少なくなります。ただし、ZendStudio はエンコーディングを自動的に認識しません。作業中に誤って間違ったエンコーディングでファイルを開き、変更を行った後にファイルを保存すると、文字化けしてしまいます。の文字が出てきます(しみじみ)。
2. ページ宣言のエンコーディング: HTML コード HEAD で、 3. データベース接続エンコーディング: データベース操作を実行するときにデータベースにデータを送信するために使用されるエンコーディングを指します。これは、データベース自体のエンコーディングと混同しないように注意する必要があります。たとえば、MySQL の内部デフォルト エンコーディングは latin1 エンコーディングであり、Mysql に送信されたデータは他のエンコーディングで変換されることを意味します。
WEB 開発にエンコーディングが関係していることを理解すると、コードが文字化けする理由もわかります。さまざまなエンコーディングのほとんどは ASCII、英語の記号と互換性があるためです。
5. いくつかの一般的なエラー状況と解決策に対処します。
1. データベースは UTF8 エンコーディングを使用し、ページ宣言エンコーディングは GB2312 です。現時点で文字化けの最も一般的な原因は、PHP スクリプト内の直接 SELECT データが文字化けしていることです。mysql_query("SET NAMES GBK"); を使用して MYSQL 接続エンコーディングを設定し、ページ宣言のエンコードは、ここで設定した接続エンコードと一致します (GBK は GB2312 拡張子です)。ページが UTF-8 でエンコードされている場合は、mysql_query("SET NAMES UTF8"); ではなく UTF8 であることに注意してください。ページで宣言されたエンコーディングがデータベースの内部エンコーディングと一致している場合、
注: 実際には、MYSQL のデータ入力と出力は、 MYSQL 設定ファイル my.ini には 2 つのデフォルトのエンコーディングが定義されており、[client] のデフォルトと [mysqld] のデフォルトの文字セットはそれぞれ使用されるエンコーディングを設定します。上記で指定したエンコーディングは、実際には、MYSQL クライアントがサーバーに接続するときに、クライアント データがデフォルトのエンコーディングを使用する代わりに使用されるエンコーディングを MYSQL サーバーに伝えるためのコマンド ライン パラメータです。
2. ページ宣言のエンコーディングがファイル自体のエンコーディングと一致しない場合、ほとんどの場合、ブラウザに表示されるページは文字化けしてしまうため、これはまれに発生します。これは、公開後にいくつかの小さなバグを修正し、間違ったエンコーディングでページを開いて保存することが原因で発生します。または、CuteFTP などの一部の FTP ソフトウェアを使用してオンラインでファイルを直接変更すると、ソフトウェアのエンコード設定が間違っているため、間違ったエンコードが変換されます。
3. バーチャルホストをレンタルしている一部の友人は、上記の 3 つのエンコードが正しく設定されているにもかかわらず、依然としてコードが文字化けしています。たとえば、Web ページが GB2312 でエンコードされている場合、ブラウザのエンコードを手動で GB2312 に変更すると、Web ページの HEAD はすでに GB2312 として認識されます。 、ページは正常に表示されます。その理由は、サーバー Apache がサーバーのグローバルなデフォルト エンコーディングを設定し、httpd.conf に AddDefaultCharset UTF-8 を追加するためです。このとき、サーバーは最初に HTTP ヘッダーをブラウザーに送信しますが、その優先順位はページ内で宣言されたエンコーディングよりも高くなります。当然、ブラウザーはそれを誤って認識します。解決策は 2 つあります。管理者は、AddDefaultCharset GB2312 を独自の仮想マシンの構成ファイルに追加してグローバル構成をオーバーライドするか、独自のディレクトリの .htaccess で構成する必要があります。

要約: 一言で言えば、PHP で中国語の文字化けコードを解決する最善かつ最速の方法は、ページ番号が適用されている場合に、ページによって宣言されたコーディングをデータベースの内部コーディングと一致させることです。ページはデータベースの内部コーディングと矛盾しています。set 接続コードを設定します。mysql_query("SET NAMES XXX"); これで文字化けの問題は確実に解決されます。

このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。

ホットAIツール

Undresser.AI Undress

Undresser.AI Undress

リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover

AI Clothes Remover

写真から衣服を削除するオンライン AI ツール。

Undress AI Tool

Undress AI Tool

脱衣画像を無料で

Clothoff.io

Clothoff.io

AI衣類リムーバー

AI Hentai Generator

AI Hentai Generator

AIヘンタイを無料で生成します。

ホットツール

メモ帳++7.3.1

メモ帳++7.3.1

使いやすく無料のコードエディター

SublimeText3 中国語版

SublimeText3 中国語版

中国語版、とても使いやすい

ゼンドスタジオ 13.0.1

ゼンドスタジオ 13.0.1

強力な PHP 統合開発環境

ドリームウィーバー CS6

ドリームウィーバー CS6

ビジュアル Web 開発ツール

SublimeText3 Mac版

SublimeText3 Mac版

神レベルのコード編集ソフト(SublimeText3)

Ubuntu および Debian 用の PHP 8.4 インストールおよびアップグレード ガイド Ubuntu および Debian 用の PHP 8.4 インストールおよびアップグレード ガイド Dec 24, 2024 pm 04:42 PM

PHP 8.4 では、いくつかの新機能、セキュリティの改善、パフォーマンスの改善が行われ、かなりの量の機能の非推奨と削除が行われています。 このガイドでは、Ubuntu、Debian、またはその派生版に PHP 8.4 をインストールする方法、または PHP 8.4 にアップグレードする方法について説明します。

CakePHP の日付と時刻 CakePHP の日付と時刻 Sep 10, 2024 pm 05:27 PM

Cakephp4 で日付と時刻を操作するには、利用可能な FrozenTime クラスを利用します。

CakePHP について話し合う CakePHP について話し合う Sep 10, 2024 pm 05:28 PM

CakePHP は、PHP 用のオープンソース フレームワークです。これは、アプリケーションの開発、展開、保守をより簡単にすることを目的としています。 CakePHP は、強力かつ理解しやすい MVC のようなアーキテクチャに基づいています。モデル、ビュー、コントローラー

CakePHP ファイルのアップロード CakePHP ファイルのアップロード Sep 10, 2024 pm 05:27 PM

ファイルのアップロードを行うには、フォーム ヘルパーを使用します。ここではファイルアップロードの例を示します。

CakePHP バリデータの作成 CakePHP バリデータの作成 Sep 10, 2024 pm 05:26 PM

Validator は、コントローラーに次の 2 行を追加することで作成できます。

PHP 開発用に Visual Studio Code (VS Code) をセットアップする方法 PHP 開発用に Visual Studio Code (VS Code) をセットアップする方法 Dec 20, 2024 am 11:31 AM

Visual Studio Code (VS Code とも呼ばれる) は、すべての主要なオペレーティング システムで利用できる無料のソース コード エディター (統合開発環境 (IDE)) です。 多くのプログラミング言語の拡張機能の大規模なコレクションを備えた VS Code は、

CakePHP クイックガイド CakePHP クイックガイド Sep 10, 2024 pm 05:27 PM

CakePHP はオープンソースの MVC フレームワークです。これにより、アプリケーションの開発、展開、保守がはるかに簡単になります。 CakePHP には、最も一般的なタスクの過負荷を軽減するためのライブラリが多数あります。

PHPでHTML/XMLを解析および処理するにはどうすればよいですか? PHPでHTML/XMLを解析および処理するにはどうすればよいですか? Feb 07, 2025 am 11:57 AM

このチュートリアルでは、PHPを使用してXMLドキュメントを効率的に処理する方法を示しています。 XML(拡張可能なマークアップ言語)は、人間の読みやすさとマシン解析の両方に合わせて設計された多用途のテキストベースのマークアップ言語です。一般的にデータストレージに使用されます

See all articles