[研究報告の目次に戻る]

ウィンドウズでこのページをご覧の方へ

Netscape Navigator (ウィンドウズ版)では一部文字化けしますので、できれば Internet Explorer でご覧になってください。マッキントッシュの場合は、どちらでも正常に表示されます。

ホームページにおけるフランス語のアクセント付き
文字の表示および処理

森田 秀二

はじめに

1)HTMLテキスト内での処理

1-1)通常のテキストの場合
1-2)プルダウンメニューの場合
1-3)ボタン表示の場合

2)フォーム入力・表示上の問題

2-1)通常のフォーム入力
2-2)別フィールドでの表示
2-3)フォーム表示

3)Java Script 内での表示処理

3-1)フォーム表示(JavaScript 使用)
3-2)サブウィンドー表示(JavaScript 使用)
3-3)別ウィンドー表示(JavaScript 使用)
3-4)アラーム表示(JavaScript 使用)

4)Java Script による解答

4-1)Q&A
4-2)ISO-8859-1 へのコード変換

5)結論

5-1)日仏混在テキストの場合
5-2)フランス語テキストだけの場合
5-3)その他

はじめに

フランス語を使用したホームページを作成する場合、特にフランス語のアクセント使用のために生じる一連の困難な問題がありました。この問題についてはすでに「インターネットを利用したフランス語学習の可能性」でもふれましたが、ここではブラウザのその後のバージョン・アップなどの環境の変化をふまえ、問題を体系的に整理し、解決法を探りたいと思います。目的はあくまでも日本での一般的なパソコン環境でふつうに見ることのできるフランス語使用のホームページづくりです。「日本での一般的なパソコン環境」というのは現時点では、日本語OS(Macintosh、あるいは Windows)がインストールされたパソコンで日本語化されたブラウザ(Netscape Navigator、あるいは Internet Explorer)を使用する環境ということになるのではないでしょうか。このように実用的な目的が前提となりますので、それに必要なことはできる限り試したつもりですが、他方でブラウザのバージョンを4.0以降に限定するなど、試験・考察対象の限定もあったことはお断りしておきます。なお、以下でフランス語とあるのはアクセント付きのフランス語を指します。

 上記ホームページでもふれましたが、フランス語には5種類のアクセント記号があります。これらのアクセント記号のついた文字は、HTMLではすべて特殊フォントとして扱われるため、例えば accent aigu のついた をブラウザの文字コードをラテン1(iso-8859-1)にして正しく表示するためには、é、あるいは é と書かなければなりません。少なくとも Macintosh で html ファイルを作成する場合はこれが必要条件になります。この記述方法をそれぞれ文字実体参照(Character entity references)あるいは数値文字参照(Numeric character references)と言います(前者はエスケープシークエンスともいいます)。特殊フォントはこのように「&キーワード;」あるいは「&#数値;」であらわされ、キーワードあるいは数値の部分に個々の特殊フォントをあらわすものが入ります。以下にアクセント記号のつく文字の記述方法を示します。

entity.gif

表1

欧文コード(特にラテン1コード[ISO-8859-1])を用いたフランス語テキストに限っては、この方法でアクセント付き文字の問題は大部分解決することになります。実際、フランス語ホームページの多くでは文字実体参照が使われています。しかし、日本語とフランス語を混在させる場合はこれだけですべて解決するわけではありません。さらに、フォームを使った場合、Java Script を使用した場合には別の問題が生じます。フランス語のアクセント付き文字の処理は一筋縄ではいかないのが現状です。この問題を考える上では、ブラウザの種類(Netscape Navigator 、Internet Explorer )、バージョン、符号化方法(S-JIS、ISO-8859-1)、入力作業に使うOS(プラットフォーム)の種類などを考慮に入れる必要があります。

入力方法についは文字実体参照と数値文字参照を挙げましたが、別種の問題がまだあります。筆者のように Mac の日本語OSだけを使っていると気がつかないのですが、後でみますように、JavaScript を使うときに特に大きな意味を持つもう一つ重要な問題がプラットフォームの違いにより生じます。

マックOSを用いてブラウザの文字コードを欧文コード(ISO-8859-1)にした場合を考えましょう。テキストファイルに h屍o と打ったものをブラウザでみると、文字化けして表示されます。文字実体参照か数値文字参照かどちらかが必要になります(後の表3参照)。ところがフランスやカナダのフランス語ホームページを実際にみてみますと、文字実体参照も数値文字参照も使わずにしかもアクセントが文字化けせずに表れるものがあります。同じ h屍o でありながら、一方はブラウザ(ISO-8859-1)で表示させると文字化けし、もう一方はちゃんと表示されるというまことに奇怪なことになるのです。アスキーコードを調べたところ、前者のマックOSで書かれた は %8E であるのに対し、後者の は %E9 であることがわかりました。つまり、同じアクセント記号をつけるのにプラットフォームによって異なったコードをあてがっているのです。前者を [1]、後者を [2]としますと、 [2]は実はウィンドウズで入力された文字なのです。同じ [2]をマックOSで表示させると になってしまいます。同じアスキーコードのものがプラットフォームによって と表示されたり、 と表示されたりしますが、ブラウザ(iso-8859-1)の場合だけプラットフォームにかかわらず と表示されるのです。一方、 [1]の方は、ブラウザ(ISO-8859-1)では逆に文字化けしてしまいます。

表2

これはウィンドウズがラテン1コード(iso-8859-1)に近いコード(Windows-1252)を使っているのに対し、マックOSが独自のコード体系(例えば、Mac Roman)を使っていることから生じるようです(飯野「パソコン上でのフランス語とフランス語関連ソフト(Windows95/98 日本語版の場合)」参照)。したがって、以下ではこの二つのコード体系を区別して扱うことにします。

かくして、入力方法 としては日本語入力(0)[ヒーロー]に加えて次の6つの場合を試す必要があることになります。

  1. フランス語の入力[1](マックOSによる)[ h屍o、 文字化けした場合は h屍o]:マックOSによるフランス語入力(例えば、英語のキーボード配列で と打つためには Option キーと E を同時にうち、さらに E をもう一度打つ)
  2. 仏語入力+< face>[ < font face="Arial, Geneva, Helvetica"> h屍o < /font>] :1.でフランス語入力したものに<font face>というタグをつけたもの
  3. 仏語文字実体参照[ h&eacute;ro]:上述の文字実体参照によるフランス語入力
  4. 仏語文字実体参照+<face>[ < font face="Arial, Geneva, Helvetica"> h&eacute;ro < /font>] :文字実体参照によるフランス語入力に<font face>タグをつけたもの
  5. 仏語数値文字参照[h&#200;ro]:上述の数値文字参照によるフランス語入力
  6. フランス語の入力[2](ウィンドウズによる) [h屍o、文字化けした場合は h駻o] :ウィンドウズによるフランス語入力(これをマックOSによって入力する方法については表14 を参照)。

符号化方法としては html によるホームページがウィンドウズでもマッキントッシュでも表示できるマルチプラットホームである点を考えるならば、代表的な日本語コードである s-jis とやはり代表的な欧文コード ISO-8859-1 の二つを主に考えればよいでしょう。ただし、これとは別の欧文コード US-ASCII を使うと Netscape Navigator にのみ一部の動作に変化が見られますので、そのときだけ別個に指摘するようにします(Internet Explorer の場合は一切変化がありません)。

使用した環境は Power Macintosh 8500/132(OS は J1-8.0)および Compac Presario(Windows 95)です。使用したブラウザは現在使われている代表的なブラウザ Internet Explorer 4.0 日本版[以下、IE4.0]、Netscape Navigator 4.0 日本版[以下、NN4.0])それぞれのマック版とウィンドウズ版、計4種類です。マック版については英語版(Internet Explorer 4.5、Netscape Navigator 4.7)もテストしましたが、結果に日本語版との違いが見られなかったため以下では言及しません。テストした単語は、日本語の「ヒーロー」とフランス語の「h屍o」です。

以上の条件で具体的に試みた結果を以下に示します。

以下では、1)HTMLテキスト内での処理、2)フォーム内での処理、3)Java Script 内での処理について具体的にみてゆきたいと思います。

1)HTMLテキスト内におけるアクセント付き文字の処理

1-1)通常のテキストの場合

左側(Demo 1)が実例です(ここでは Netscape Navigator の場合)。上記の4つのブラウザで試験した結果は表(右下)のようになりました。

表3

Demo 1
(日本語コードの場合)

0

ヒーロー

1

h屍o

2

h屍o

3

héro

4

héro

5

héro

6

h駻o

欧文コード(ISO-8859-1)の場合はこちら

欧文コード(iso-8859-1)で仏文を表示するには、文字実体参照、数値文字参照、もしくは仏語入力[2]を使用するのが必要にして十分な条件であることがわかります。ここでは<font face>タグは字体を統一する機能を担っているだけです。上述したようにアクセント付き文字の8ビットでのコード化はプラットフォームにより異なっていますが、文字実体参照、数値文字参照はともに7ビット文字を使用しており、転送中の破損のリスクがおさえられるのでこれを用いることが勧められているようです。

問題は日仏語を混在させる場合です。これにはまず日本語環境を選ばざるを得ません。

そのうえで、IE4.0 ならばマック版でもウィンドウズ版でも 文字実体参照か数値文字参照を使えば混在が可能です。ところが、NN4.0 ですと 文字実体参照、数値文字参照を使用すれば逆に文字化けを起こしてしまいます。NN4.0 のマック版ではかろうじて通常の仏語入力[1]をおこない、それを<font face>タグで欧文フォント指定するという方法がありますが、ウィンドウズ版ではこれも無理です。

ここでは NN4.0(ウィンドウズ版)を除いたブラウザで日仏語を混在させる方法を考えることにしましょう。両方のブラウザで共通に使える単独ファイルの作成は不可能であることは明らかです。どうしたらよいのでしょうか。

少し面倒なやり方ですが、それぞれのブラウザに対応する別々のファイルを作っておき、使用しているプラウザに応じてどちらかを選ばせるというやり方しかないでしょう。この選択プロセスを自動化することはできます。そのためには、Java Script によりブラウザの種類を自動的に判断させ、種類に応じてどちらかふさわしいファイルをロードさせるという方法をとります。ご覧のこのページ自体は選択を自動化させるために以下のような三つのファイル・グループから構成されています。

図1

ちなみに、今このページをご覧になっているブラウザはNetscape Navigator ですね?


1-2)プルダウンメニューの場合

まずは左のプルダウンメニュー(Demo 2 )をご覧になってください。

Demo 2 (日本語コードの場合)

h屍ohéro
欧文コード(ISO-8859-1)の場合はこちら
表4
 

Demo 2 ではご覧のように日本語環境(s-jis)では IE4.0(ウィンドウズ版)以外はどれも文字化けを起こしています。したがって、日本語環境でのフランス語のプルダウンメニュー表示は断念すべきでしょう。プルダウンメニューでの試験結果は表4の通りです。

欧文環境でも、フォントは固定されており<font face>タグは機能していません。結局、実体参照、数値文字参照、もしくは仏語入力[2]を用いることが必要にして十分な条件ということになります(Netscape Navigatorで us-ascii コードを選ぶと、仏語入力[1]で正常に表示され、反対に仏語入力[2]が文字化けを起こします)。


1-3)ボタン表示の場合

ご覧のように、日本語環境ではアクセント付き欧文をボタン表示することは唯一 IE4.0(ウィンドウズ版)を例外とすれば、不可能です。

Demo 3 (日本語コードの場合)

欧文コード(ISO-8859-1)の場合はこちら
表5

また、ボタン表示では<font face>タグが機能しないばかりでなく、そのまま表示されてしまいますから、使用できません。

以上1-1)〜1-3)をまとめますと、次のようになります。

 


2.アクセント付き文字の入力・表示上の問題

フォームの<input type=text>あるいは<textarea>の中にアクセント付きの語を入力すると文字化けを起こすことがあります。日本語環境の場合、入力と同時に文字化けしてしまいますし、欧文環境で無事入力できても入力したものを別の入力フィールドや別のフレームに表示させようとするときに文字化けしてしまうことがあります。どのような場合に文字化けするのでしょうか。それを防ぐ方法はないのでしょうか。以下でも h屍o という単語を例にこの問題を考えることにします。


2-1)通常のフォーム入力:同一入力フィールドでの入力と表示

下のフォームに h屍o と入力してみてください(実際には文字化けするかもしれません)。

表6

Demo 4(日本語コードの場合)

欧文コード(ISO-8859-1)の場合はこちら

このように日本語環境ではアクセント付きの文字は IE(ウィンドウズ版)を除き、文字化けしてしまいます。欧文環境では入力自体は問題ありません。

2-2)フォーム入力したものを別フィールドで表示

ここではみなさんがフィールド内で入力したフランス語を別のフィールドで表示します。 h屍o と入力したうえで、show を押してみてください。

表7

Demo 5(日本語コードの場合)

欧文コード(ISO-8859-1)の場合はこちら

やはり日本語環境では IE(ウィンドウズ版)を唯一例外として、ほかはすべて文字化けしてしまいます。欧文環境では大丈夫です。


2-3)フォームへの表示

予め書き込まれた日本語とフランス語をフォーム表示します。

表8
欧文コード(ISO-8859-1)の場合はこちら

Demo 6(日本語コードの場合)

0

1

2

3

4

5

6

やはり日本語環境ではアクセント付きの文字は IE(ウィンドウズ版)を除いてすべて文字化けしてしまいます。タグも表示されてしまいます。欧文環境では3)と6)が正しく表示されます(Netscape Navigatorで us-ascii コードを選んだ場合は、仏語入力[1]と仏語入力[2]が逆転します)。

以上2-1)〜2-3)をまとめますと、次のようになります。


3.JavaScript による表示

Java Script に埋め込んだフランス語をいかに表示するかを考えます。

3-1)フォームへの表示(Java Script 使用)

Java Script に埋められたフランス語(1〜6)をフォーム表示します。

以下のボタンを押してください。下の枠内に表示されます。

表9

Demo 7(日本語コードの場合)

欧文コード(ISO-8859-1)の場合はこちら

やはり日本語環境ではアクセント付きの文字はすべて文字化けしてしまいます。タグも表示されてしまいます。欧文環境では6)のみがブラウザ、プラットフォームを問わず正しく表示されます(Netscape Navigatorで us-ascii コードでは、やはり仏語入力[1]と仏語入力[2]が逆転します)。


3-2)サブウィンドーへの表示(Java Script 使用)

ボタンをおせば、サブウィンドーが現れます。

表10

Demo 8
(日本語コードの場合)

欧文コード(ISO-8859-1)の場合はこちら

日本語環境で正しく表示される可能性が高いのは3)4)です。欧文環境の場合は、3)4)5)のどれかを用いればすべて正常に表示されます。


3-3)別ウィンドーへの表示(Java Script 使用)

数字をおせば、下のウィンドーに表示されます。

表11

Demo 9
(日本語コードの場合)

欧文コード(ISO-8859-1)の場合はこちら

NN(ウィンドウズ版)が日本語環境でも欧文環境でも正常な表示ができません。しかし、実用性の観点からいけば、3-2)と同じ結論になります。


3-4)アラーム表示(Java Script 使用)

数字をおせば、アラームに表示されます。

表12

Demo 10
(日本語コードの場合)

欧文コード(ISO-8859-1)の場合はこちら

IE(マック版)を除けば、フランス語のアラーム表示は日本語環境でも欧文環境でもできません。

以上3-1)〜3-4)をまとめますと、次のようになります。


4.自動解答システム

Java Script はすでに前章でも扱いましたが、ここではJava Script による自動解答システムの場合のフランス語アクセント処理について考えてみましょう。

自動解答システムとはフォーム入力した答(x)と予めスクリプトに書かれた正解(y)とを比較することにより成り立ちますが、アクセントのついた語の場合にはここで問題が生じます。前章同様、 h屍o という単語を例にこの問題を考えることにします。


4-1)自動解答システム

[0]には「ヒーロー」、それ以外には h屍o と入力してみてください。下のウィンドーに判定があらわれます。

表13

Demo 11(日本語コードの場合)

欧文コード(ISO-8859-1)の場合はこちら

日本語環境(s-jis)の場合、マッキントッシュでのみ仏語入力[1]を用いればどちらのブラウザでもうまく機能します。をアスキーコードで示すと x と y の内容は以下のようになり、一致するのだと思われます(式1)。

x=h+%8E +ro
y=h+%8E +ro
しかし、すでに Demo 4 でみましたように被試験者がアクセント付きの x を入力するときにマッキントッシュでは必ず文字化けを起こします。これは極めて不自然な入力ですので、アクセント記号付きのフランス語文字を日本語環境で入力することはやはり避けるべきでしょう。結局、自動解答システムとしては日本語環境は望ましくないことになります。

欧文環境(iso-8859-1)の場合、答え(x)のフォーム入力は問題ありませんが、比較して一致する正解(y)の方は仏語入力[2]によって予めスクリプトの中に埋め込んであるもの(y6)だけです。 をアスキーコードで示すと次のようになると考えられます(式2)。

x=h+%E9+ro
y6=h+%E9+ro
式1と式2を比べますと、マッキントッシュという同一のプラットフォームでも、日本語環境(s-jis)と 欧文環境 (iso-8859-1)とでは入力した が異なるアスキーコードとして読み込まれていることがわかります。結論としては、フランス語を直接フォーム入力するタイプの自動解答システムでは欧文環境を使うべきであり、その場合、フランス語入力[2]を使わざるをえないということになります(Netscape Navigatorで us-ascii コードを選ぶと、仏語入力[1]と仏語入力[2]が逆転します)。

4-2)ISO-8859-1 へのコード変換

結局、フランス語入力[2]が自動解答システムでは欠かせないことになりますが、それではマックOSによりフランス語入力[2]をおこなうことは不可能なのでしょうか。マックOSで を打てば、ブラウザで と表示されることはすでにみました。その他のアクセントについても次のような「マックでの表示」の通りに入力すれば、フランス語アクセントの「ブラウザ表示」が得られます。

表14

これは大変煩雑なプロセスですが、実はマック用のコード変換ソフト Tower of Babel がこれをやってのけてくれます。また、ワープロのマクロにより一括変換することも考えられます。もっとも、一番簡単な方法は仏文入力[1]で作ったホームページを Fetch でアップロードするときに、Fetch の設定でラテン1(iso-8859-1)への自動一括変換を選ぶという方法でしょう。


5.結論

以上の考察をまとめて、アクセント付きのフランス語を使用するホームページを作るときのヒントを以下に述べさせていただきます。

5-1)日本語環境(s-jis)で日本語とフランス語を混在させる場合

  1. 日本語コードで、フランス語のアクセントをIE、NNともに表示させる方法がないので、それぞれ別のファイルを作っておき、閲覧者がどちらかを選ぶようにするか、Java Script により 閲覧者が使用しているブラウザを判断してどちらかを自動選択させるようにする。なお、IE 用のファイルでは文字実体参照か数値文字参照を使用し、NN 用ファイルではふつうのフランス語入力[1]したものを<font face>タグで囲み、欧文フォント(例えば、Arial, Geneva など)を指定する。ただし、NN(ウィンドウズ版)では文字化けは避けられない。
  2. プルダウン・メニューやボタンにフランス語を表示することは非現実的(IE ウィンドウズ版のみ可能)。
  3. フランス語のフォーム入力や、別フィールドに表示させることも非現実的(IE ウィンドウズ版のみ可能)。
  4. 予め書かれたフランス語をフォームに表示させることも 非現実的(IE ウィンドウズ版のみ可能)。
  5. Java Script に埋め込まれたフランス語をフォームに表示することは不可能。
  6. Java Script に埋め込まれたフランス語をサブウィンドーや別フレームに表示するには文字実体参照を使う(NN ウィンドウズ版は不可)。
  7. フランス語のアラーム表示は非現実的(IE マック版のみ可能)。
  8. 自動解答システムは、ブラウザの種類を問わずマッキントッシュを使った場合は機能する。ただし、この場合でもフォーム入力で文字化けをおこすので、日本語環境でのフランス語入力はやはり避けるべきだろう。

5-2)欧文環境でフランス語だけを用いる場合(iso-8859-1)

  1. フランス語テキストをふつうに表示させるためには、ブラウザ、プラットフォームを問わず、文字実体参照、数値文字参照、あるいはフランス語入力[2]のどれを使用してもよいが、文字実体参照が一般的。<font face>タグを用いても問題ない。
  2. プルダウン・メニューやボタンに表示させるためには、IE、NNともに文字実体参照、数値文字参照、あるいはフランス語入力[2]のどの入力方法を使用してもよい。ただし、<font face>タグは用いない。
  3. フランス語のフォーム入力、あるいはフランス語を別フィールドに表示させるのは問題ない。
  4. 予め埋め込まれたフランス語をフォームに表示させるには、文字実体参照か仏語入力[2]のどちらかを用いる。<font face>タグは使えない。
  5. Java Script に埋め込まれたフランス語をフォームに表示させるには、仏語入力[2]を用いる。
  6. Java Script に埋め込まれたフランス語をサブウィンドーや別フレームに表示するには文字実体参照、数値文字参照を使うのがベスト。<font face>タグを用いても問題ない。
  7. アラーム表示は IE(マック版)でしかできないので、非現実的。
  8. 自動解答システムを機能させるためには、入力方法[2]を用いる。

5-3)その他

  1. 文字実体参照が使えると数値文字参照も使える場合が多いが、Demo 6 のような場合もある。さらに使いやすさや普及度などを考慮すると、両方が可能であっても文字実体参照を用いた方がよい。
  2. 欧文環境での符号化方式としてラテン1(iso-8859-1)があるが、この他に NN には Mac Roman があり、IE には Mac、Windows がある。さらに、us-ascii というのもある。しかし、一般性を考えるとラテン1への対応を基本に据えるべきであろう。
  3. 仏語入力[2]はウィンドウズの通常の入力方法だが、マッキントッシュでも仏語入力[1]によりテキストを作り、それをコード変換することはできる。
  4. 以上の結論として、すべての環境に対応したフランス語ホームページを作ることは困難である以上、目的に応じて最大公約数的な処置をとることが、少なくとも現時点では最善の策と言えるであろう。


    [この報告のトップに戻る]

    [研究報告の目次に戻る]

    Page created: 99.4.2
    Last modified: 2000.1.10
    By morita (morita@mail.yamanashi.ac.jp)
    
     














































    <font face>とは何か

    <font face>というタグは、新しいヴァージョンのブラウザー(Netscape Navigator 3.0, Internet Explorer 4.0 以降)が対応するタグですが、Netscape Navigator (3.0以降)のマック版ならば日本語環境(つまり文字コードを日本語に設定した状態)でもこれで欧文フォントを指定するだけでアクセント付き文字の表示が可能となりました。この場合、上述の文字実体参照への変換は不要となります。このタグを用いてWindows や Macintosh の定番欧文フォントを指定すれば、同じページ内に日本語とフランス語を混在させることが簡単にできます。

    例:<font face="Arial, Geneva, Helvetica">C'師ait un dr冤e d'師.</font>

    Tower of Babel によるコード変換

    Tower of Babel を開いたら、変換するテキストを選んで、Add を押し、左下に表示させます。次に右側のプルダウンメニューで、From Mac-Roman、To ISO-8859-1 をそれぞれ選択したうえで、さらに High ASCII をチェックして Remap を選びます。あとは Convert を押すだけです。

    babel.gif


    注:一括変換マクロの例(Nisus Writer 用)

    macro.gif


    Fetch の設定

    Fetch でアップロードする際に一括してコード変換させるためには次のような設定が必要になります。
    まず、Preferences メニューから Misc を選びます。その中に Translate ISO characters という項目がありますから、これをチェックします。後は通常のやり方でアップロードするだけです。


[この報告のトップに戻る]

[研究報告の目次に戻る]