練炭ブログ

萌え壁紙、Irvine、DMonkey、Proxomitron などの情報を扱ってます。

DMonkey: HTTP.length と HTTP.read().length の違い

コメントなし»

Irvine 1.3.1.127 & DMScript 0.3.12

var http = new HTTP ();
http.request ('GET', 'http://www.google.co.jp/favicon.ico');
http.response ();
var data = http.read();

var f = new File('test1234.ico');
f.open ('w');
f.write (data);
f.close ();

alert ("http.length = " + http.length
+ "\nhttp.read() length = " + data.length
+ "\nFile.write() length = " + f.length);

http.read() の返り値(string 型)の .length が小さいことがあるのは、データのバイト数ではなくマルチバイト文字列(Shift_JIS?)として解釈した場合の文字数だからのようです。

http.read().charCodeAt(~) も、マルチバイト文字だった場合 0x100 以上の値を返してきます。

読み込んだデータをバイト単位で読み書きしたい場合は StringBuffer 型に変換すればいいらしいです。

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です