metaタグと文字化け
- 文字化けの原因
文字化けはブラウザーが、文字コードを正しく判定していないか、異なる文字コードが混入することが、原因と考えられる。また、検索エンジンなどの検索結果の文字化けは、不適切なurlに関する設定で、検索エンジンを呼び出した事による。異なる文字コードが混入する原因は、プログラムが関係している。urlとプログラムの問題はあとで解説することにして、このページでは、ブラウザーに正しく文字コードを判別させる目的で、設定されているmetaタグについて解説します。
- 文字コードをブラウザーに明示するmetaタグ
文字コードをブラウザーに明示するmetaタグを具体的に、見てもらうために、3つのソースコードを表示しました。下記のソースコードで、色が違っている一行が、文字コードをブラウザーに明示するmetaタグです。最後に、utf-8といずれもなっていることがわかるでしょう。この部分をshift_jis,euc-jpとすると、それぞれの文字コードで、ブラウザーはウエブページを解釈しようとします。このmetaタグがなければ、ブラウザーは、ウエブページの文字の状態から、判別プログラムによって、文字コードを判別しようとします。文字化けを防ぐためには、metaタグで、文字コード設定をしておくべきです。
- metaタグの注意点
下の3つのソースコードを比較してみてください。私が使っている外国のテンプレートのソースコードは、オリジナルでは、titleタグ、<title>が、文字コード設定のmetaタグより前にありますが、YahooやGoogleは、順序が逆になっています。英数字だけのサイトなら問題ないのですが、文字コード設定のmetaタグより前に漢字やひらがながあると、文字コード設定のmetaタグがうまく機能しない場合があるそうです。titleタグに漢字やひらがなを使う場合は多いですから、文字設定のmetaタグの後にtitleタグをおいた方が安全なのです。
当サイトで使用したテンプレートのオリジナルソースコードの一部
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
<head>
<title>Sixpence | Portal</title>
<meta http-equiv="content-language" content="en-us" />
<meta http-equiv="content-type" content="text/html; charset=utf-8" />
<meta name="author" content="Author Name Goes Here" />
<meta name="design" content="Sadhana Ganapathiraju" />
<meta name="copyright" content="Copyright Goes Here" />
<meta name="description" content="Description Goes Here" />
<meta name="keywords" content="And, Finally, Keywords Go Here." />
<link rel="start" title="Home" href="http://www.sixpence.com/" />
<link rel="stylesheet" type="text/css" media="screen" href="screen.css" />
<!--[if lt ie 7]><link rel="stylesheet" type="text/css" media="screen" href="ie-win.css" /><![endif]-->
</head>
上から6行目が、文字コードをブラウザーに明示するmetaタグ。
Yahooのソースコードの一部
<html lang="ja">
<head>
<meta http-equiv="content-type" content="text/html; charset=utf-8">
<meta http-equiv="content-style-type" content="text/css">
<meta http-equiv="content-script-type" content="text/javascript">
<meta name="description" content="日本最大級のポータルサイト。(途中略)「ライフ・エンジン」を目指していきます。">
<title>Yahoo! JAPAN</title>
上から3行目が、文字コードをブラウザーに明示するmetaタグ。
Googleのソースコードの一部
<html>
<head>
<meta http-equiv="content-type" content="text/html; charset=utf-8">
<title>Google</title>
上から3行目が、文字コードをブラウザーに明示するmetaタグ。