【専ブラ】2ちゃんねるブラウザ 「2chMate」part100

このエントリーをはてなブックマークに追加
507名無しさん@お腹いっぱい。
>>2
語学板にアクサンのついた文字を書き込んだらエラーとなった件の続き。
ネットワークをダンプしたら、以下のようになっていた。

なお、書き込んだ文字は、Unicode で言うと [0x00e0, 0x00e9, 0x00e8]。
aの上にアクサングラーブ、eの上にアクサンテギュ、eの上にアクサングラーブの3文字。

●Chrome で書き込み成功時

POST http://awabi.2ch.net/test/bbs.cgi?guid=ON HTTP/1.1
Host: awabi.2ch.net
Proxy-Connection: keep-alive
Content-Length: 134
Cache-Control: max-age=0
Proxy-Authorization: Basic **********
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8
Origin: http://awabi.2ch.net
User-Agent: Mozilla/5.0 (Windows NT 5.1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/34.0.1847.131 Safari/537.36
Content-Type: application/x-www-form-urlencoded
Referer: http://awabi.2ch.net/test/read.cgi/gogaku/1298542858/l50
Accept-Encoding: gzip,deflate,sdch
Accept-Language: ja,en-US;q=0.8,en;q=0.6,de;q=0.4,fr;q=0.2
Cookie: ******=****; ***=**-**-**-**.***.***.***.**; HAP=FOXdayo*******; ... NAME=""; MAIL="sage"

submit=%8F%91%82%AB%8D%9E%82%DE&FROM=&mail=sage&MESSAGE=%26%23224%3B%26%23233%3B%26%23232%3B&bbs=gogaku&key=1298542858&time=1400842769

●2chMate で書き込み失敗時

POST http://awabi.2ch.net/test/bbs.cgi?guid=ON HTTP/1.1
Referer: http://awabi.2ch.net/test/read.cgi/gogaku/1298542858/
Content-Length: 116
Content-Type: application/x-www-form-urlencoded; charset=java.nio.charset.CharsetICU[Shift_JIS]
Host: awabi.2ch.net
Connection: Keep-Alive
Cookie: HAP=FOXdayo*******; ***=***; ***=**-**-**-**.***.***.***.**; ...
Cookie2: $Version=1
Proxy-Authorization: Basic **********
User-Agent: Monazilla/1.00 (2chMate/0.8.6)
X-2ch-UA: 2chMate/0.8.6

FROM=&mail=sage&MESSAGE=%FC%FC%FC%FC%FC%FC&bbs=gogaku&time=1400844240&key=1298542858&submit=%8F%91%82%AB%8D%9E%82%DE

要するに、Unicode[0x00e0, 0x00e9, 0x00e8]が、Chrome だと %26%23224%3B%26%23233%3B%26%23232%3Bのようにエンコードされているのに、
Mate はすべて %FC に変換され、うまくエンコードされていない。
Content-Type に、charset=java.nio.charset.CharsetICU[Shift_JIS]とあって、SJIS 限定になっているのもマズいと思う。

2chMate がどんなプログラムか全然イメージできないけど、class initialize 時に locale を設定するみたいな、何か 1 行追加で解決する手の話なら、ぜひ対応お願いしたい。