人力検索で「ダイアリーとグループ日記の違い」についての質問(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のデフォルトの機能でアクサン記号付き文字を入力しました。
- Altキーと数字キーを用いてアクサン記号を入力する - パソコンdeフランス語
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」になるはずです。
- 'LATIN SMALL LETTER A WITH GRAVE' (U+00E0) - Unicode Character
- グレイヴ・アクセント - Wikipedia
なので「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と違って、もっと複雑なエンコード規則を持ってるんですね。
- EUC-JP - Wikipedia
- ISO/IEC 2022 - 3.2 Extended Unix Code (EUC) - Wikipedia
それで「8F AB A2」の3バイトですが、まず冒頭の「8F」がSS3(シングルシフト3)という制御文字で、G3という領域に割り当てられたコード表(ここではJIS X 0212補助漢字)から文字を1文字だけ引っ張ってきます。その引っ張ってくる文字が「AB A2」というコードで表された文字で、これがまさに「グレイヴ付きA」なんですね。
- 補助漢字 - Wikipedia
- JIS X 0212 (1990) to Unicode 補助漢字コード表 - 日本語文字コード
5. 結論
ということで、はてなダイアリーでも欧州文字(ダイアクリティカルマーク付きラテン文字)は入力・表示できますが
- EUC-JPの枠組みのなかで
- JIS補助漢字表の中にある欧州文字を表示する
というものであって、はてなダイアリーが多言語化されているわけではないです。はてなダイアリーを多言語化して欲しいという声ははてなアイディアに既にたくさんありますが、さてどうでしょうね…