以下のコードを使って、さまざまなことを _ html _ ページにまとめた、いくつかの _ php _ ページがあります。
<meta http-equiv="Content-type" content="text/html; charset=utf-8" />
しかし、 W3Cバリデーター を使って検証すると次のようになります。
HTTPヘッダー(iso-8859-1)に指定されている文字エンコードが、要素(utf-8)の値と異なります。
私はPHPが初めてなので、PHPファイルのヘッダーをHTMLファイルと一致するように変更できるかどうかを考えました。
HTTPヘッダーを変更するには header
を使用します。
header('Content-Type: text/html; charset=utf-8');
出力がクライアントに送信される前にこの関数を呼び出すことに注意してください。それ以外の場合は、ヘッダーも送信されているため、これ以上変更できません。これは headers_sent
で確認できます。詳しくは header
のマニュアルページ を参照してください。
まずPHPファイル自体が UTF-8 encodedであることを確認してください。
メタタグは一部のブラウザでは無視されます。あなたがASCII文字だけを使うのであれば、とにかく関係ありません。
http://en.wikipedia.org/wiki/List_of_HTTP_header_fields
header('Content-Type: text/html; charset=utf-8');
これはあなたのWebサーバがあなたが定義したものと一致しないHTTPヘッダを送信することに関する問題です。サーバに正しいヘッダを送信させる方法については このページ を参照してください。
そうでなければ、ヘッダを変更するためにPHPを使うこともできますが、これは の前に このコードを使ってテキストを出力する必要があります:
header('Content-Type: text/html; charset=utf-8');
PHPを使用してヘッダを送信する方法についての詳細は/ ヘッダ関数のドキュメント にあります。
もっと短い方法でも使えます。
<?php header('Content-Type: charset=utf-8'); ?>
RFC 2616を参照してください charsetだけを指定することは有効です。
正しく実装するためには、一連のことを変更する必要があります。
データベース(接続直後):
mysql_query("SET NAMES utf8");
//Meta tag HTML.(probably its 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
内部エンコーディングを設定するとPHPは自動的にヘッダを送信します
ini_set('default_charset', 'utf-8');