HTMLで多言語混在テキストを作成する場合、日本語以外の言語の言語特有な文字をブラウザで表示させるには、
の2つの方法が考えられます。現在では各ブラウザの対応も進み、メジャーなブラウザ(Firefox等の"Mozilla系" と MSIE)に限らず、大抵の場合 Unicode, それもUTF-8で記述すれば、まず間違いなく表示出来るようです。
「文字コードとはそもそも何か」とか、「Unicodeの生い立ち」等の解説については他のサイトにゆずるとして、ここでは「日本語/チェコ語混在テキスト文書」作成に使用する文字コードの選択肢の一つとして、Unicode, 特にUTF-8 を使うという話と、実際にHTMLファイルを作成する場合の注意点について書いていきます。
テキストファイル作成時に文字コードを決めるのはOSではなく、テキストエディタになります。
従って、大概の場合、Unicode を扱えるエディタを別途入手する必要があります。ただし、Unicode には幾つもの種類があり、下手をすると「Unicode 対応」と謳っていながら、自分が目的とする文字コード(ここではUTF-8)が使えないものである可能性があるので、注意が必要です。
下表にUnicodeを扱えるテキストエディタを挙げました。Windows用のそれぞれのソフトについては、高橋さんによる詳しい解説がありますので、そちらを参照して下さい。私はxyzzyがお薦めと思います。
また、UNIX/Linux用には、LOACLE(ユーザ毎、或いはマシン毎に設定される言語設定)に依存せずに各国語を取り扱えるという点で、emacsやvi/vimあたりが良いかと思います。
Macintosh | Windows | UNIX / Linux |
---|---|---|
mi TextEdit(MacOS標準装備) ※また、MacOSXでは、UNIXの emacs+ mule-ucs等を使うことも出来る。 |
xyzzy(Unicode各種対応) 秀丸エディタ(UTF-16,UTF-8) Yudit mined(要cygwin) |
emacs+ mule-ucs Yudit mined gedit |
UnicodeでHTMLを記述するには、次の点に注意が必要です。
取り敢えず、見ていきましょう。
<!DOCTYPE HTML> ←(1)
<html lang="ja"> ←(2)
<head>
<meta http-equiv="Content-Type" content="text/html;charset=utf-8"> ←(3)
<meta name="keyword" content="(ページのキーワード)">
<meta name="description" content="(ページの概要)">
<link rel="stylesheet" href="./czech-style.css" type="text/css"> ←(4)
<link rel="index" href="./index.html">
<link rel="prev" href="./prev.html">
<link rel="next" href="./next.html">
<link rel="author" href="mailto:myaccount@mydomain.jp">
<title>(ページのタイトル)</title>
</head>
<body>
・・・(コンテンツを記述)・・・
</body>
</html>
以上のように記述したら、文字コード・改行コードを指定して保存します。
このとき、保存するファイルの文字コードはBOMなしのutf-8 である必要があります。
MacintoshやWindowsで動作するテキストエディタの多くは、「BOMありutf-8」を「UTF-8 」と表し、「BOMなしutf-8」のことを「UTF-8N」のように、後ろに「N」をつけた表記で表していますので、ここでは「UTF-8N」を選択します。
但し、HTMLファイルに記述する文字コード指定は、上記(3)のように「utf-8」とします。
「BOMなし」とする理由は単にMozilla系 やMSIEなどのブラウザが、「BOMなしutf-8」を前提にしているからです。敢えてBOMありで保存して閲覧した場合、ブラウザやそのバージョンによっては正常に表示されない場合があります。
尚、昔はこんな風に問題が起きました(下表参照):
ファイルの 文字コード |
METAタグに記述する文字コード | Windows版 Netscape4.5[ja]上での表示 |
Windows版 InternetExplorer5[ja]上での表示 |
---|---|---|---|
Unicode (UTF-8) |
UTF-8 | 不正常 | (未確認) |
Unicode (UTF-8N) |
UTF-8N | 不正常 | (未確認) |
Unicode (UTF-8) |
UTF-8N | 不正常 | (未確認) |
Unicode (UTF-8N) |
UTF-8 | 正常 | 正常(一部文字化けあり)
尤も、2003年1月現在でメジャーになっているバージョン(IE6)では、このような文字化けは発生しないようである。
|
尚、「BOM」とは、 Byte Order Mark の略です。utf-16等は、バイト・オーダー(平たく言うと、データ並びの向き)がビッグ・エンディアンかリトル・エンディアンかによってデータの並びが違う為、その何れであるかを明示する為に BOM というものが取り決められています。 BOMは、utf-8でも一応使っても良いことになっていますが、utf-8は自体はそもそもデータの単位が1byte(=8bit)である為にバイト・オーダーは元々問題になりません。従って、utf-8でBOMを付ける必然性は特にありません。
.czech {/* チェコ語用フォントを優先するよう指定 */ font-family: "Courier CE", "Courier New CE"; }