Вместо:

Выделить код

Код:

blank.mess = "Ураааа!!!!!!!";//текст сообщения

получаю
#@0000!!!!!!!
Это если файл в utf-8 сохранён
А если в cp1251, вообще 6 букв "ы".
создаю объект файла кодом

Выделить код

Код:

var file = Components.classes["@mozilla.org/file/local;1"].createInstance(Components.interfaces.nsILocalFile);
file.initWithPath (fileName);

объект записи

Выделить код

Код:

var JS_FILE_WRITE = 0x02;
var outputStream = Components.classes["@mozilla.org/network/file-output-stream;1"].createInstance(Components.interfaces.nsIFileOutputStream);
outputStream.init (file, JS_FILE_WRITE, 0644, null);

Где не прав?

Строки в JavaScript хранятся в unicode, не в utf-8.
Если нужна другая кодировка, надо перекодировать поток. Вот подходящий кусок кода из FileIO:

Выделить код

Код:

fromUnicode : function(charset, data) {
            try {
                var uniConv = Components.classes[this.suniconvCID]
                                    .createInstance(this.suniconvIID);
                uniConv.charset = charset;
                data = uniConv.ConvertFromUnicode(data);
                // data += uniConv.Finish();
            }
            catch(e) {
                // foobar!
            }
            return data;
        }

27-02-2009 16:18:45
чёрт, забыл:

Выделить код

Код:

suniconvCID   : '@mozilla.org/intl/scriptableunicodeconverter',
        suniconvIID   : Components.interfaces.nsIScriptableUnicodeConverter,

прошу прощения

aikus
http://forum.mozilla-russia.org/viewtopic.php?pid=298374#p298374

рабочий пример