文字セットは、文字を特定のエンコード値にマッピングする文字を保存するためにコンピューターが使用するシステムです。エンコードは、文字セット内の文字をバイナリデータに変換する方法です。一般的な文字セットには、UTF-8、GBK、ISO-8859-1などが含まれます。
多言語のWebサイトでは、ほとんどすべての言語文字をサポートし、適切な互換性を持っているため、 UTF-8エンコードが通常選択されます。 UTF-8は、世界のほぼすべてのテキストを表すことができる可変長さの文字エンコードです。
データベースとPHPの間のエンコードをエンコードする文字は一貫している必要があります。そうしないと、データ送信中に文字化けされたコードまたは失われた情報が発生する場合があります。たとえば、データベースがUTF-8エンコーディングを使用し、PHPがデータベースに接続するときに文字を正しく設定しない場合、データベースに保存されている中国のコンテンツがWebサイトでターゲットとして表示される可能性があります。
mysqli :: set_charsetは、 PHPとMySQLデータベースの間の一貫性をエンコードする文字を確保するように設計されています。この方法を使用することにより、MySQLデータベース接続を設定して、データベースに接続した後に特定の文字セットを使用して、一貫性のないエンコードによって引き起こされるディスプレイの問題を回避できます。
mysqli :: set_charsetメソッドを使用することは非常に簡単です。 MySQLIを介してMySQLデータベースに接続されていると仮定すると、ここに文字セットをUTF-8に設定する手順があります。
<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">$mysqli</span></span><span> = </span><span><span class="hljs-keyword">new</span></span><span> </span><span><span class="hljs-title function_ invoke__">mysqli</span></span><span>(</span><span><span class="hljs-string">"localhost"</span></span><span>, </span><span><span class="hljs-string">"username"</span></span><span>, </span><span><span class="hljs-string">"password"</span></span><span>, </span><span><span class="hljs-string">"database_name"</span></span><span>);
</span><span><span class="hljs-comment">// 接続が成功しているかどうかを確認してください</span></span><span>
</span><span><span class="hljs-keyword">if</span></span><span> (</span><span><span class="hljs-variable">$mysqli</span></span><span>->connect_error) {
</span><span><span class="hljs-keyword">die</span></span><span>(</span><span><span class="hljs-string">"接続に失敗しました: "</span></span><span> . </span><span><span class="hljs-variable">$mysqli</span></span><span>->connect_error);
}
</span><span><span class="hljs-comment">// キャラクターを設定します UTF-8</span></span><span>
</span><span><span class="hljs-keyword">if</span></span><span> (!</span><span><span class="hljs-variable">$mysqli</span></span><span>-></span><span><span class="hljs-title function_ invoke__">set_charset</span></span><span>(</span><span><span class="hljs-string">"utf8"</span></span><span>)) {
</span><span><span class="hljs-title function_ invoke__">printf</span></span><span>(</span><span><span class="hljs-string">"間違い:文字セットを設定できません %s\n"</span></span><span>, </span><span><span class="hljs-variable">$mysqli</span></span><span>->error);
</span><span><span class="hljs-keyword">exit</span></span><span>();
}
</span><span><span class="hljs-comment">// データベースクエリおよびその他の操作を実行します...</span></span><span>
</span><span><span class="hljs-meta">?></span></span><span>
</span></span>
上記のコードでは、 $ mysqli-> set_charset( "utf8")は、データベース接続の文字セットをUTF-8に設定します。これにより、データベースから読み取りまたは書き込まれたデータをUTF-8エンコードとして正しく処理できるようになり、文字化けの問題を回避できます。
多言語のWebサイトは通常、中国語、英語、日本語などの複数の言語でコンテンツを保存します。これらの言語コンテンツを適切に表示できるようにするために、データベースの文字セットとPHP接続の文字セットが一致する必要があります。 PHPのデータベース接続コードでmysqli :: set_charsetを設定して、一貫したエンコードを確保できます。さらに、文字セットをフロントエンドページに設定する必要があります。通常、文字セットは、HTMLの<Meta>タグを設定することにより、UTF-8として指定されます。
<span><span><span class="hljs-tag"><<span class="hljs-name">meta</span></span></span><span> </span><span><span class="hljs-attr">charset</span></span><span>=</span><span><span class="hljs-string">"UTF-8"</span></span><span>>
</span></span>
このようにして、フロントエンドページは、UTF-8エンコーディングに従ってコンテンツを解析し、さまざまな言語の文字を正常に表示できるようにします。
データがデータベース内の異なる言語で文字を正しく保存できるようにするには、データベースのテーブルとフィールドがUTF-8を使用してエンコードされていることを確認する必要があります。次のSQLコマンドを使用してテーブルを作成するときに、UTF-8にセットを指定できます。
<span><span><span class="hljs-keyword">CREATE</span></span><span> </span><span><span class="hljs-keyword">TABLE</span></span><span> `content` (
`id` </span><span><span class="hljs-type">INT</span></span><span> </span><span><span class="hljs-keyword">NOT</span></span><span> </span><span><span class="hljs-keyword">NULL</span></span><span> AUTO_INCREMENT </span><span><span class="hljs-keyword">PRIMARY</span></span><span> KEY,
`title` </span><span><span class="hljs-type">VARCHAR</span></span><span>(</span><span><span class="hljs-number">255</span></span><span>) </span><span><span class="hljs-keyword">NOT</span></span><span> </span><span><span class="hljs-keyword">NULL</span></span><span>,
`description` TEXT
) ENGINE</span><span><span class="hljs-operator">=</span></span><span>InnoDB </span><span><span class="hljs-keyword">DEFAULT</span></span><span> CHARSET</span><span><span class="hljs-operator">=</span></span><span>utf8;
</span></span>
デフォルトのcharset = utf8を指定することにより、テーブルがUTF-8エンコーディングをサポートし、さまざまな言語から文字を保存できるようにします。
ゴミコードの問題:
文字セットを設定した後にまだCarledコードが表示されている場合は、最初にデータベースのデフォルト文字セットがUTF-8かどうかを確認します。さらに、ページのHTMLエンコードがUTF-8に設定されていることを確認する必要があります。これらが正しく設定されているが、問題が続く場合は、データベーステーブルとフィールドの文字設定設定を確認できます。
キャラクターセットは一貫性がありません:
データベースの文字セットとPHP接続が一貫していない場合、文字が正しく表示されない場合があります。 mysqli :: set_charsetメソッドを使用して、2つの間の一貫性を確保します。
MySQLバージョンはサポートしています:
MySQLバージョンがUTF-8またはUTF8MB4をサポートしていることを確認してください(後者は、絵文字などのより多くのキャラクターをサポートするUTF-8のスーパーセットです)。次のコマンドを使用して、現在のデータベースでサポートされている文字セットを表示できます。
<span><span><span class="hljs-keyword">SHOW</span></span><span> </span><span><span class="hljs-type">CHARACTER</span></span><span> </span><span><span class="hljs-keyword">SET</span></span><span>;
</span></span>
関連タグ:
mysqli