中国語投稿問題(続)

昨日、外字が自動的に数値参照に変換できない原因として、IEEUC-JP実装ミスと語りましたが、どうやら間違いがある模様です。
夜3時過ぎてたため、実験をせずに日記を書きましたが、どうやらid:suikanさんが実験した結果によると、ページがEUC-JPであっても、外字は同じく数値参照に変換しました。

自分が持っている別サイトのBBSで実験をして見ました。確かにIEはShift-JISにない漢字を数値文字参照に変換して書き込みます。ところで、実験によるとWEBページがEUC-jpであっても正しく数値文字参照に変換していました。つまりIEは無実です。

この原因ではない模様なので、ほかの理由を探しました。
はてなの投稿フォームをじっくり研究した結果、ひとつ気になる特徴があります。それはイメージを転送するために、フォームはmultipartと設定しているところです。

<form method="post" action="./edit" enctype="multipart/form-data">

マルチパートというのは、普通のURI準拠で文字をASCIIに変換することはなく、直接文字・イメージなどのデータを転送する規格です。
早速、自分でmultipartのフォームをつくり、そしてPerl言語で以下のCGIプログラムを書きます:

#!/usr/bin/perl
:
(中略)
:
read(STDIN, $buffer, $ENV{'CONTENT_LENGTH'});
print $buffer;

標準入力からPOSTしたデータを長さCONTENT_LENGTHバイトを読み込んで、そのままWebブラウザに出力します。(実験用のテキストは「你好嗎 我很好 走吧」という文字列です。)
しかし、CGIが出力した結果は

-----------------------------7d42af2a2a00c0
Content-Disposition: form-data; name="context"

&#20320;好&#21966; 我很好 走&#21543;

-----------------------------7d42af2a2a00c0--

そう、正確に数値参照に変換していました。CGIプログラムではまったく投稿したデータを処理していませんから、理屈で、この出力の内容は入力したもののそのままです。この実験から見れば、multipartのEUC-JPでも、やはり外字は自動に変換されるはずです。
納得できないため、同じ文字列ではてなに新しい日記として投稿してみたら、ダメでした。しかし、自分で数値参照に変換する結果で投稿した場合、問題なく投稿できました。
これは・・・マジで今私が思いついた理由は全滅でした。いったいどうしてはてなだけ変換できないですよね・・・・ 深いです。