現在の位置: ホーム> 最新記事一覧> mysqli :: set_charset sql queryは設定後に飾られていますか?キャラクターが送信で正しいことを確認する方法

mysqli :: set_charset sql queryは設定後に飾られていますか?キャラクターが送信で正しいことを確認する方法

gitbox 2025-09-20
<span><span><span class="hljs-meta"><?php</span></span><span>
</span><span><span class="hljs-comment">// 事前に依存しないコードの例</span></span><span>
</span><span><span class="hljs-variable">$pre_data</span></span><span> = </span><span><span class="hljs-keyword">array</span></span><span>(</span><span><span class="hljs-string">"apple"</span></span><span>, </span><span><span class="hljs-string">"banana"</span></span><span>, </span><span><span class="hljs-string">"cherry"</span></span><span>);
</span><span><span class="hljs-keyword">foreach</span></span><span> (</span><span><span class="hljs-variable">$pre_data</span></span><span> </span><span><span class="hljs-keyword">as</span></span><span> </span><span><span class="hljs-variable">$item</span></span><span>) {
    </span><span><span class="hljs-keyword">echo</span></span><span> </span><span><span class="hljs-title function_ invoke__">strtoupper</span></span><span>(</span><span><span class="hljs-variable">$item</span></span><span>) . </span><span><span class="hljs-string">"<br>"</span></span><span>;
}
</span><span><span class="hljs-meta">?></span></span><span>

<hr>

</span><span><span class="hljs-meta"><?php</span></span><span>
</span><span><span class="hljs-comment">// 記事が始まります</span></span><span>
</span><span><span class="hljs-keyword">echo</span></span><span> </span><span><span class="hljs-string">"<h1>mysqli::set_charset 設定後 SQL 照会したコードをクエリします?キャラクターが送信で正しいことを確認する方法</h1>"</span></span><span>;

</span><span><span class="hljs-keyword">echo</span></span><span> </span><span><span class="hljs-string">"<p>使用中 PHP の <code>mysqli
";エコー

ここで、 UTF8MB4は推奨される文字セットであり、絵文字を含む完全なユニコードをサポートしています。

エコー

3。一般的な文字化けシナリオとソリューション

エコー

シナリオ1:テーブルまたはフィールドエンコーディングは一貫性がありません

エコー

set_charsetが正しく設定されていても、データベーステーブルまたはフィールドがまだラテン語である場合、中国語または特殊文字が誤ってデコードされます。

エコー "

解決:

"
;エコー
テーブルを変更するyour_table文字セットに変換utf8mb4 collat​​e utf8mb4_unicode_ci;
"
;
エコー

シーン2:エンコードミスマッチをエンコードするページ表示

エコー

WebページがUTF-8を使用してエンコードされ、MySQLデータがUTF8MB4である場合、通常の状況ではガーブルされません。しかし、WebページがISO-8859-1として宣言されているかどうかにかかわらず、中国人は依然として例外を表示します。

エコー

ページのヘッダーのセキュリティ:

;エコー
<meta charset='UTF-8'>
"
;
エコー

シナリオ3:データを挿入する前に一貫性のないエンコード

エコー

フォームまたはインターフェイスから取得した文字エンコードは、MySQL接続エンコードと一致する必要があります。そうしないと、挿入時に文字化けコードが発生します。

エコー

解決策:フロントエンドとPHPの両方がUTF-8を使用するなど、統一エンコード。

;エコー

4。包括的なベストプラクティス

エコー "
    "
;エコー
  • データベースとテーブルはUTF8MB4文字セットを使用します。
  • ;エコー
  • phpがmysqlに接続した直後にmysqli :: set_charset( 'utf8mb4')に電話してください。
  • ;エコー
  • フロントエンドWeb宣言<Meta charset = 'utf-8'> 、フォーム提出コードはUTF-8です。
  • ;エコー
  • UTF8_ENCODEまたはUTF8_DECODEを手動で使用しないようにし、RAW UTF-8データを直接使用します。
  • エコー "" ;エコー "

    まとめ

    "
    ;エコー

    キャラクターの文字化された文字は、通常、クライアント、データベース、ディスプレイ側で一貫性のないエンコードによって引き起こされます。MySqli :: Set_charsetを使用することは、PHPがMySQLと正しく通信することを保証する重要なステップですが、データベーステーブルとページエンコードでは、文字化けされた問題を完全に解決する必要があります。

    ?> <?php //テールに依存しないコードの例 $ footer_links = array "home" "about" "contact" ); foreach $ footer_links として $ link ){ echo " " ucfirst $ link )。 "|" ; } ?>