PHPの中国語文字化けの解決策
2. データベース操作を実行する必要がある PHP プログラムの前に、エンコーディングが PHP エンコーディングと一致するように追加します。 PHPのエンコードがgb2312、mysqlのエンコードがgb2312の場合はutf-8なので、データの挿入時や取得時に文字化けが発生しません 3. PHP はオペレーティングシステムに関連しています Windows と Linux のエンコードは異なります。Windows 環境では、move_uploaded_file()、filesize()、readfile() などの PHP 関数を呼び出すときにパラメータが UTF-8 エンコードされているとエラーが発生します。これらの関数は処理中です。 Uploads. はダウンロード時によく使用されますが、呼び出し時に次のエラーが発生する場合があります。 警告: move_uploaded_file()[function.move-uploaded-file]: ストリームを開けませんでした: 引数が無効です… 警告: move_uploaded_file()[function.move-uploaded-file]:「 」を「 」に移動できません… 警告: filesize() [function.filesize]: ... の ... の統計に失敗しました 警告: readfile() [function.readfile]: ストリームを開けませんでした: .. の引数が無効です。 Linux 環境で gb2312 エンコーディングを使用する場合、これらのエラーは発生しませんが、保存されたファイル名が文字化けし、ファイルを読み込むことができなくなります。この場合、パラメーターをオペレーティング システムが認識するエンコーディングに変換できます。 mb_convert_encoding(文字列, 新しいエンコード, 元のエンコード) または iconv (元のエンコード, 新しいエンコード, 文字列) で行うことができるため、処理後に保存されたファイル名が文字化けせず、ファイルを正常に読み込んでアップロードを実現できます。中国語名ファイルのダウンロード。 実際には、システムから完全に分離する、より良い解決策があります。そのため、システムのエンコーディングを考慮する必要はありません。ファイル名として文字と数字のみのシーケンスを生成し、データベースに漢字を含む元の名前を保存することができます。この方法では、ダウンロード時に move_uploaded_file() を呼び出すときに問題は発生しません。ファイル名を中国語の文字を含む元の名前に変更します。ダウンロードを実装するコードは次のとおりです
$file_type はファイルの種類、$file_name は元の名前、$file_path はサービス上に保存されたファイルのアドレスです。 4.文字化けするのはなぜですか? 一般的に、文字化けが発生する原因は 2 つあります。まず、エンコード (文字セット) 設定のエラーが原因で、ブラウザが間違ったエンコードで解析し、乱雑な「天国の本」が表示されます。次に、ファイルを開いて間違ったエンコードで保存しています。たとえば、テキスト ファイルは元々 GB2312 でエンコードされていましたが、UTF-8 エンコードで開かれて保存されました。上記の文字化けコードの問題を解決するには、まず開発のどの側面にコーディングが含まれるかを知る必要があります。 1. ファイルエンコーディング: ページファイル (.html、.php など) 自体が保存されるエンコーディングを指します。 Notepad と Dreamweaver では、ページを開くときにファイルのエンコーディングが自動的に認識されるため、問題は少なくなります。ただし、ZendStudio はエンコーディングを自動的に認識しません。作業中に誤って間違ったエンコーディングでファイルを開き、変更を行った後にファイルを保存すると、文字化けしてしまいます。の文字が出てきます(しみじみ)。 2. ページ宣言のエンコーディング: HTML コードの HEAD では、 を使用して Web ページが使用するエンコーディングをブラウザーに伝えることができます。現在、XXX は中国の Web サイト開発で主に GB2312 と UTF-8 を使用しています。 3. データベース接続エンコーディング: データベース操作を実行するときにデータベースにデータを送信するために使用されるエンコーディングを指します。たとえば、MySQL 内のデフォルトのエンコーディングと混同しないように注意してください。 latin1 は、Mysql が latin1 エンコーディングを使用してデータを保存することを意味し、他のエンコーディングで Mysql に送信されたデータは latin1 エンコーディングに変換されます。 Web 開発のどこにコーディングが関係しているかを知ると、コードが文字化けする原因もわかります。上記の 3 つのコーディング設定が矛盾しているため、さまざまなコーディングのほとんどが ASCII と互換性があるため、英語の記号は表示されず、中国語の文字は表示されません。運。 。 5. よくあるエラーの状況と解決策 1. データベースは UTF8 エンコーディングを使用しており、ページ宣言のエンコーディングは GB2312 です。これが文字化けの最も一般的な原因です。このとき、PHP スクリプト内の直接 SELECT データは文字化けします。クエリを実行する前に mysql_query("SET NAMES GBK"); を使用して、MYSQL 接続エンコーディングを設定し、ページ宣言エンコーディングが接続と一致していることを確認する必要があります。ここでエンコードを設定します (GBK は GB2312 の拡張子です)。ページが UTF-8 でエンコードされている場合は、mysql_query("SET NAMES UTF8"); を使用できます。 一般的に使用される UTF-8 ではなく、UTF8 であることに注意してください。ページ宣言のエンコーディングがデータベースの内部エンコーディングと一致している場合は、接続エンコーディングを設定する必要はありません。 注: 実際、MYSQL のデータ入出力は、上で説明したものよりも複雑です。MYSQL 構成ファイル my.ini には 2 つのデフォルトのエンコーディングが定義されています。 [mysqld]. -character-set は、クライアント接続と内部データベースにそれぞれデフォルトで使用されるエンコーディングを設定します。上記で指定したエンコーディングは、実際には、MYSQL クライアントがサーバーに接続するときのコマンド ライン パラメーターcharacter_set_client であり、デフォルトのエンコーディングを使用する代わりに、受信したクライアント データのエンコーディングを MYSQL サーバーに伝えます。 2. ページ宣言のエンコーディングがファイル自体のエンコーディングと一致しない場合、エンコーディングが一致しない場合、ページ作成時にアーティストがブラウザに表示する内容が文字化けしてしまうため、これはめったに起こりません。多くの場合、リリース後にいくつかの軽微なバグを修正し、間違ったエンコーディングでページを開いて保存することが原因で発生します。または、CuteFTP などの一部の FTP ソフトウェアを使用してオンラインでファイルを直接変更すると、ソフトウェアのエンコード設定が間違っているため、間違ったエンコードが変換されます。 3. バーチャルホストをレンタルしている一部の友人は、上記の 3 つのエンコードが正しく設定されているにもかかわらず、依然としてコードが文字化けしています。たとえば、Web ページが GB2312 でエンコードされている場合、ブラウザのエンコードを手動で GB2312 に変更すると、Web ページの HEAD はすでに GB2312 として認識されます。 、ページは正常に表示されます。その理由は、サーバー Apache がサーバーのグローバルなデフォルト エンコーディングを設定し、httpd.conf に AddDefaultCharset UTF-8 を追加するためです。このとき、サーバーは最初に HTTP ヘッダーをブラウザーに送信しますが、その優先順位はページ内で宣言されたエンコーディングよりも高くなります。当然、ブラウザーはそれを誤って認識します。解決策は 2 つあります。管理者は、AddDefaultCharset GB2312 を独自の仮想マシンの構成ファイルに追加してグローバル構成をオーバーライドするか、独自のディレクトリの .htaccess で構成する必要があります。 要約: PHP の中国語コードの文字化けを解決する最善かつ最速の方法は、ページによって要求されたページ番号がデータベースの内部エンコーディングと一致しない場合、ページで宣言されたエンコーディングがデータベースの内部エンコーディングと一致していることを要求することです。データベース、接続エンコーディングを設定します、mysql_query("SET NAMES XXX "); XXX は接続エンコーディングであり、文字化けの問題を確実に解決できます。 |

ホットAIツール

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

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

Undress AI Tool
脱衣画像を無料で

Clothoff.io
AI衣類リムーバー

Video Face Swap
完全無料の AI 顔交換ツールを使用して、あらゆるビデオの顔を簡単に交換できます。

人気の記事

ホットツール

メモ帳++7.3.1
使いやすく無料のコードエディター

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

ゼンドスタジオ 13.0.1
強力な PHP 統合開発環境

ドリームウィーバー CS6
ビジュアル Web 開発ツール

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

ホットトピック











JWTは、JSONに基づくオープン標準であり、主にアイデンティティ認証と情報交換のために、当事者間で情報を安全に送信するために使用されます。 1。JWTは、ヘッダー、ペイロード、署名の3つの部分で構成されています。 2。JWTの実用的な原則には、JWTの生成、JWTの検証、ペイロードの解析という3つのステップが含まれます。 3. PHPでの認証にJWTを使用する場合、JWTを生成および検証でき、ユーザーの役割と許可情報を高度な使用に含めることができます。 4.一般的なエラーには、署名検証障害、トークンの有効期限、およびペイロードが大きくなります。デバッグスキルには、デバッグツールの使用とロギングが含まれます。 5.パフォーマンスの最適化とベストプラクティスには、適切な署名アルゴリズムの使用、有効期間を合理的に設定することが含まれます。

セッションハイジャックは、次の手順で達成できます。1。セッションIDを取得します。2。セッションIDを使用します。3。セッションをアクティブに保ちます。 PHPでのセッションハイジャックを防ぐための方法には次のものが含まれます。1。セッション_regenerate_id()関数を使用して、セッションIDを再生します。2。データベースを介してストアセッションデータを3。

PHP開発における固体原理の適用には、次のものが含まれます。1。単一責任原則(SRP):各クラスは1つの機能のみを担当します。 2。オープンおよびクローズ原理(OCP):変更は、変更ではなく拡張によって達成されます。 3。Lischの代替原則(LSP):サブクラスは、プログラムの精度に影響を与えることなく、基本クラスを置き換えることができます。 4。インターフェイス分離原理(ISP):依存関係や未使用の方法を避けるために、細粒インターフェイスを使用します。 5。依存関係の反転原理(DIP):高レベルのモジュールと低レベルのモジュールは抽象化に依存し、依存関係噴射を通じて実装されます。

phpstormでCLIモードをデバッグする方法は? PHPStormで開発するときは、PHPをコマンドラインインターフェイス(CLI)モードでデバッグする必要がある場合があります。

システムが再起動した後、UnixSocketの権限を自動的に設定する方法。システムが再起動するたびに、UnixSocketの許可を変更するために次のコマンドを実行する必要があります:sudo ...

静的結合(静的::) PHPで後期静的結合(LSB)を実装し、クラスを定義するのではなく、静的コンテキストで呼び出しクラスを参照できるようにします。 1)解析プロセスは実行時に実行されます。2)継承関係のコールクラスを検索します。3)パフォーマンスオーバーヘッドをもたらす可能性があります。

PHP開発でPHPのCurlライブラリを使用してJSONデータを送信すると、外部APIと対話する必要があることがよくあります。一般的な方法の1つは、Curlライブラリを使用して投稿を送信することです。
