javascript HTML5 FILE API readAsText()の動作がOperaは違う

OperaとOpera Mobileは、FILE APIのFileReaderのreadAsText()の動作がfirefoxやChromeと異なった。
Operaは、ゼロ(NULL)があるとそれとそれ以降の文字は読まずに切り捨てる。
firefoxとChromeはゼロ(NULL)があっても読みそれ以降の文字も読む。
データにNULL終端を入れているのでOperaでは困ってしまった。
Operaでは、readAsBinaryString()で読み込んでUTF-8をUCS2に変換する関数をJavascriptで書いて解決させた。
だが、Android用のOpera Mobileだと、このUTF-8からUCS2への変換処理に時間がかかる。
データ変えてNULL終端でないデータ形式に変えれば速いと思うが、データ互換がなくなるので簡単にはデータ形式を変えられない。
バッファリングする高水準ファイル入力関数がないので、読み込みサイズがあらかじめ分かっていないとHTML5ではプログラムが難しい。

自作したUTF-8をUCS2に変換する関数は所詮スクリプトなので遅い。
特にボロ携帯のARMv6だと顕著になる。
UTF-8とUCS2の変換機能がjavascriptに内蔵されていれば良かったが、されていないようだ。
FileReaderのreadAsText()では読み込み時に文字コードの変換ができるが、Operaだと0があるとそこから先読まないから、その先を読みたければ自分で遅いスクリプトのコードを書いて変換するしかない。