Android 2.0 SDK で BufferedReader のバグが直ってた: 最近のちょっ得
全然追ってない(面倒だから追う気もない)のだけど、En2chで懸案だった(そしてTuboroidでも懸案だった)Android の BufferedReader のバグが 2.0 でFix されたようだ。
全然追ってないが原因は大体想像が付く。Javaの文字列は内部UTF-16であり、UTF-8だろうがMS932だろうが読み込み時点で文字コード変換が入るため、「内部バッファの末端にマルチバイト文字の前半だけが来た場合にその先を待たずに不正シーケンス(つまり「破損した文字」)として捨てていた」とかどうせそんなとこだろう。少なくとも典型的にはそこが真っ先に疑われる。
つまり、BufferedReaderのバグではなくInputStreamReader近辺のバグと踏んでいる。
が、そもそもEclairのブランチはどこだ。gitの見方もよく分からんし、Androidのソースツリーの構造もよく分からん。
どもです。
お互いこのバグには悩まされましたね^^;
私もあんま深追いはしてないですが、InputStreamReader#read() では、全く化けなかったはずですよ。
BufferedReader を介しても UTF-16 なら化けなかったので、encoding 変換でしくってるとも思いますが、buffer size を増やせば明らかに化けは減るので、buffer size を超えた時の処理が甘いような気もします。
まぁ、直ったからどうでもいいか。。