PHPを開発していると、中国語名が文字化けするという問題がよく発生します。通常、その理由は、ファイルが UTF-8 でエンコードされていない、データベース接続が UTF-8 に設定されていない、または HTML ページ ヘッダーが正しいエンコードを宣言していないなど、文字セットの不一致です。意味不明な部分を完全に解決するには、プロジェクト全体で一貫したコーディングを確保することが重要です。
まず、PHP ファイルのエンコード形式が UTF-8 (BOM なし) であることを確認します。エディターでファイルを UTF-8 エンコード形式として保存し、PHP ファイルの先頭にあるヘッダー関数を使用して出力エンコードを設定します。
<?php
header('Content-Type: text/html; charset=utf-8');
?>PHP プログラムが MySQL データベースと対話する必要がある場合は、接続後に必ず UTF-8 エンコーディングを設定してください。これにより、データベースによって読み書きされる中国語データが文字化けしないことが保証されます。
<?php
$servername = "localhost";
$username = "username";
$password = "password";
$dbname = "database";
$conn = new mysqli($servername, $username, $password, $dbname);
$conn-> set_charset("utf8");
?>Web ページを出力するときは、UTF-8 エンコードも指定する必要があります。これにより、ブラウザーがページのコンテンツを誤って解析するのを防ぐことができます。
<!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title>中国語文字化け質問</title> </head> <body> <?php echo "こんにちは,世界!"; ?> </body> </html>
文字列自体のエンコードが一貫していない場合は、PHP の mb_convert_encoding 関数を使用して手動で UTF-8 に変換できます。
<?php $str = "中国語の文字化け"; $str_utf8 = mb_convert_encoding($str, "UTF-8"); echo $str_utf8; ?>
コンテンツを出力する前に、header 関数を使用して HTTP ヘッダー情報を設定すると、出力コンテンツのエンコード タイプを明確に指定できるため、文字化けを効果的に回避できます。
<?php
header('Content-Type: text/html; charset=utf-8');
echo "こんにちは,世界!";
?>PHP の中国語名の文字化けを解決するための中心となるアイデアは、「ファイル エンコーディング、データベース エンコーディング、Web ページ エンコーディング、および HTTP ヘッダー エンコーディング」を UTF-8 に統一することです。エンコードが一貫している限り、PHP で中国語を処理するときに文字化けが発生することはなくなります。これにより、Web サイトの互換性が向上するだけでなく、中国語表示がより自然かつ正確になります。