回答:
header
HTTPヘッダーを変更するために使用します。
header('Content-Type: text/html; charset=utf-8');
出力がクライアントに送信される前に、この関数を呼び出すことに注意してください。それ以外の場合は、ヘッダーも送信されているため、明らかにヘッダーを変更することはできません。で確認できheaders_sent
ます。詳細については、のマニュアルページをheader
参照してください。
META
HTML文書がHTTP経由で(たとえばディスクから)ロードされない場合は、HTTP相当が使用されます。
まず、PHPファイル自体がUTF-8でエンコードされていることを確認します。
一部のブラウザではメタタグが無視されます。ASCII文字のみを使用する場合、それはとにかく問題ではありません。
http://en.wikipedia.org/wiki/List_of_HTTP_header_fields
header('Content-Type: text/html; charset=utf-8');
これは、定義したものと一致しないHTTPヘッダーを送信するWebサーバーの問題です。サーバーに正しいヘッダーを送信させる方法については、こちらのページをご覧ください。
それ以外の場合は、PHPを使用してヘッダーを変更することもできますが、次のコードを使用してテキストを出力する前に行う必要があります。
header('Content-Type: text/html; charset=utf-8');
PHPを使用してヘッダーを送信する方法の詳細については、ヘッダー関数のドキュメントをご覧ください。
より短い方法を使用することもできます:
<?php header('Content-Type: charset=utf-8'); ?>
RFC 2616を参照してください。文字セットのみを指定することは有効です。
Content-Type = "Content-Type" ":" media-type
およびmedia-type = type "/" subtype *( ";" parameter )
正しく実装するには、一連のことを変更する必要があります。
データベース(接続直後):
mysql_query("SET NAMES utf8");
// Meta tag HTML (probably it's already set):
meta charset="utf-8"
header php (before any output of the HTML):
header('Content-Type: text/html; charset=utf-8')
table-rows-charset (for each row):
utf8_unicode_ci
<meta>
タグは不要になります。