in between days

表参道で働くシニアのブログ

はてなダイアリーで欧州文字が表示できるのは国際化なのか?

人力検索で「ダイアリーとグループ日記の違い」についての質問(question:1179986333)があって、大雑把にグループの利点としてUTF-8だから多言語なひとにはオススメ的なことを書いたところ、コメント欄でid:sibazyunさんから

私のダイアリーでは、utf-8で字上符(アクセント記号、ウムラウトの類)をいれているし、「編集」で過去のを見ると、utf-8ので出ています。つまり、欧文系を書くには問題ない、ということです。
http://q.hatena.ne.jp/1179986333#comment

という物言いが付いたので調べてみました。結論から言うと確かに

欧文系を書くには問題ない

です。実際の例を下に示します*1

テスト test à test

ですが詳しく見てみるとこれはどうやら「UTF-8ではない」ようです。というかやはりEUCの仕様の枠内にあるシングルシフトという仕組みで、JISの補助漢字表にある欧州文字を1文字だけ呼び出しているということでした。

わかってみれば「なーんだ」という話ですが調べるのに意外と時間がかかったので自分のためにもちょっとまとめておきます。

1. アクサン記号付き文字を入力する

欧州言語用のキーボードやFEPは持ってないので、次のページを参考にWindows XPのデフォルトの機能でアクサン記号付き文字を入力しました。

2. 表示されたダイアリーがどういう文字コードなのか調べる

それだったらこのページの「ソースを見る」とわかるんじゃね?

とつい思っちゃいますが、文字コードがなんなのかはソースを見ただけはわかんないんですね。バイナリエディタ的なもので開いてみないといけない。手元にWindowsなバイナリエディタが無かったので、手近なBSDでwgetしてhdしてみました*2。次の0x5a30番地からの3バイトが肝心の「グレイヴ付きA」文字です。

00005a20  2f 74 65 73 74 22 3e 74  65 73 74 3c 2f 61 3e 20
00005a30  8f ab a2 20 3c 61 20 63  6c 61 73 73 3d 22 6b 65
00005a40  79 77 6f 72 64 22 20 68  72 65 66 3d 22 68 74 74

ヨコに入りきらないのでhdの出力そのものを折り返しちゃいますが、対応するアスキー文字はこれです。バイナリダンプ中の「8F AB A2」に対応したところが文字化けしてますが

  |/test">test</a> |
  |.・ <a class="ke|
  |yword" href="htt|

3. UTF-8で「グレイヴ付きA」はどう表現されるはず?

3バイトで1文字を表すというとUTF-8もそうですが、それはCJK文字の話。

UTF-8で「グレイヴ付きA」を表現すると「C3 A0」になるはずです。

なので「8F AB A2」とエンコードされてるはてなダイアリーは「UTF-8を使ってない」ことがわかります。ちなみにはてなグループで同じように試したところ、ちゃんと「C3 A0」になりました。はてなグループはやはりUTF-8ですね。

4. では「8F AB A2」は何を意味するのか?

EUCって日本語は1文字=2バイトなんじゃね?

と思いがちですが、それは一般的な基本漢字(JIS X 0208)を使ってる場合の話で、補助漢字を使うときには3バイトになるんです。EUCは、実はいわゆるJISコード(ISO-2022-JP)と同様にISO/IEC 2022のサブセットで、ただ2バイトに漢字を割り当てたいわゆるシフトJISと違って、もっと複雑なエンコード規則を持ってるんですね。

それで「8F AB A2」の3バイトですが、まず冒頭の「8F」がSS3(シングルシフト3)という制御文字で、G3という領域に割り当てられたコード表(ここではJIS X 0212補助漢字)から文字を1文字だけ引っ張ってきます。その引っ張ってくる文字が「AB A2」というコードで表された文字で、これがまさに「グレイヴ付きA」なんですね。

5. 結論

ということで、はてなダイアリーでも欧州文字(ダイアクリティカルマーク付きラテン文字)は入力・表示できますが

  • EUC-JPの枠組みのなかで
  • JIS補助漢字表の中にある欧州文字を表示する

というものであって、はてなダイアリーが多言語化されているわけではないです。はてなダイアリーを多言語化して欲しいという声ははてなアイディアに既にたくさんありますが、さてどうでしょうね…

*1:ただし、IEでは文字化けしているかもしれません。フォントやそのほかの設定を変えればなんとかなるのかもしれませんが、いま自分の環境はFirefoxに移行しちゃってて、Firefoxでは表示されてるんで…

*2:これは別のページでテストしたときのバイナリダンプなのでこのページをそのままバイナリダンプするとアドレスがかなりズレます