Unicode を使う

...テキストファイル、特にHTMLファイル作成方法の一つとして、Unicode (UTF-8) を使用する方法について書いています。




1. はじめに

HTMLで多言語混在テキストを作成する場合、日本語以外の言語の言語特有な文字をブラウザで表示させるには、

  1. 実体文字参照を用い、Unicode以前からある文字コード(Shift_JIS, JIS, euc-jpなど)で記述する。
  2. Unicodeでファイルを作成し、特殊文字を直接記述する。

の2つの方法が考えられます。現在では各ブラウザの対応も進み、メジャーなブラウザ(Firefox等の"Mozilla系" と MSIE)に限らず、大抵の場合 Unicode, それもUTF-8で記述すれば、まず間違いなく表示出来るようです。
「文字コードとはそもそも何か」とか、「Unicodeの生い立ち」等の解説については他のサイトにゆずるとして、ここでは「日本語/チェコ語混在テキスト文書」作成に使用する文字コードの選択肢の一つとして、Unicode, 特にUTF-8 を使うという話と、実際にHTMLファイルを作成する場合の注意点について書いていきます。



2. ツール

テキストファイル作成時に文字コードを決めるのはOSではなく、テキストエディタになります。
従って、大概の場合、Unicode を扱えるエディタを別途入手する必要があります。ただし、Unicode には幾つもの種類があり、下手をすると「Unicode 対応」と謳っていながら、自分が目的とする文字コード(ここではUTF-8)が使えないものである可能性があるので、注意が必要です。

下表にUnicodeを扱えるテキストエディタを挙げました。Windows用のそれぞれのソフトについては、高橋さんによる詳しい解説がありますので、そちらを参照して下さい。私はxyzzyがお薦めと思います。
また、UNIX/Linux用には、LOACLE(ユーザ毎、或いはマシン毎に設定される言語設定)に依存せずに各国語を取り扱えるという点で、emacsやvi/vimあたりが良いかと思います。




Unicode対応のテキストエディタ
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


3. HTMLファイルを編集する

UnicodeでHTMLを記述するには、次の点に注意が必要です。

  1. head フィールドの記述内容
  2. ファイルを保存する際の文字コード指定

取り敢えず、見ていきましょう。

3.1 ヘッダの編集

HTML ファイルの記述ですが、まずは <head></head>で囲まれた領域を見ていきます。
尚、ここでは HTML5 を取り上げます。
<!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>

	


ここで一点、注意しなければならないことがあります。
それは、文字コードを指定する
<meta http-equiv="Content-Type" content="text/html;charset=utf-8">
というタグを、このファイルで使われる最初の非ASCII文字よりも先に記述しなければならないことです。
例えば、meta タグの description, keywords, author, 或いはtitle タグ の行には日本語やチェコ語などを使う可能性がありますが、それらよりも先に記述しなければならないということです。
上記の例のように <head> タグ の直後に書けば問題ないでしょう。
この順番を守らなかった場合、Seamonkey や Firefox 辺りでは特に支障はないのですが、MSIEでは最悪「何も表示されない」場合があるので要注意です。

以上のように記述したら、文字コード・改行コードを指定して保存します。
このとき、保存するファイルの文字コードは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を付ける必然性は特にありません。

3.2 BODYの編集

表示する側の環境にもよります(最近のPC用OSではこのあたり、特に配慮は不要だと思いますが)が、チェコ語文字を記述した箇所、特にハーチェクが文字化けする場合があります。チェコ語の箇所にはチェコ語を表示出来るフォントを使うよう、コード中に個別の指示することで、これを回避出来る場合があります。
ここは<span>タグとスタイルシートを使います。

まず、外部スタイルシート(ここでは、ファイル名を"czech-style.css" とします)に、チェコ語用のSPANクラス "czech" を、次のように定義します。
尚、ここでは指定するフォントの例として "Courier CE", "Courier New CE" の2つを指定しています。
		.czech {/* チェコ語用フォントを優先するよう指定 */
		  font-family: "Courier CE", "Courier New CE";
		  }
	

他にもフォントサイズ、色等あれこれと指定することが出来ますが、ここはフォント指定のみとしておきます。
上記のようにフォントを複数指定した場合、先頭に書かれたものほど優先的に選択されます。この例では、クライアントがWindows(チェコ語対応)の場合、Mac用のフォントである"Courier CE"がなくても、"Courier New CE"がある筈なので、これが選択される。という具合です。
閲覧側の色々な環境を考慮して、出来れば複数のフォントを指定した方が良いでしょう。
スタイルシートの記述が終わったら、このスタイルシートをHTMLファイルから参照するようにします。
前節で示したHTMLファイルの記述の(4)にあるように、<link>タグを記述します。
そして最後に、HTMLファイルの文字種指定をしたいところに、

<span lang="cs" class="czech">Česky</span>

としておけば、その部分のフォントを変える事が出来ます。
音声読み上げソフトで閲覧する場合などを考慮し、同時に lang 属性も設定しておきましょう。
lang属性の値は、HTML文書の主言語の指定に使うものと同じです。
SPANタグではもっといろいろなことが出来ますが、更に詳しいことについては、HTMLの書籍等を参照して下さい。
また、上記の例では "czech" クラスを<span>タグに適用しましたが、他のタグ(例えば<div>、<a>など)にも同様に適用させることが出来ます。
但し、このフォント指定という方法は、閲覧者の環境に適切なフォントが入っていてこその話です。必要なフォントの入っていない閲覧環境ではやはり正しく表示されませんが、制作者側としては、これは止むを得ないでしょう。
そのような環境をフォローとすれば、恐らく「言語固有の文字を全く使用しないページを別に用意しておく」といった方法しかないと思います。



Unicodeに関する参考文献・サイト

戻る...
Special thanks to: 高橋 誠 様(「鈴木朝子と高橋誠の部屋」

ご意見・ご感想はこちらまで...