Xpoint
   [напомнить пароль]

Сохранение данных в файл

2005-09-16 15:21:20 [обр] vasilena@sinn.ru [досье]
Здравствуйте. Теперь у меня возникла вот какая проблема: при сохранении русского текста в файл, портятся буквы. А именно, отрезаны старшие байты. Например "р" - U+0440, а у меня получается 0040. Как я понимаю, необходио прибавить 0х400. Как это существить? Если можно, то напишите кусочек кода.
спустя 1 час 5 минут [обр] Владимир Палант [досье]
Так ведь в файл пишутся байты, а вы даёте на ввод Unicode-строку. Вы в UTF-8 писать хотите? Думаю, что тут надо тоже воспользоваться nsIScriptableUnicodeConverter. Сейчас попробую сообразить пример...
спустя 13 минут [обр] Владимир Палант [досье]
var data = "\u0442\u0435\u0441\u0442";
var converter = Components.classes['@mozilla.org/intl/scriptableunicodeconverter']
                          .createInstance(Components.interfaces.nsIScriptableUnicodeConverter);
converter.charset = 'utf8';
data = converter.ConvertFromUnicode(data);

var file = Components.classes['@mozilla.org/file/local;1']
                     .createInstance(Components.interfaces.nsILocalFile);
file.initWithPath('c:\\test');
var stream = Components.classes['@mozilla.org/network/file-output-stream;1']
                       .createInstance(Components.interfaces.nsIFileOutputStream);
stream.init(file, 0x02 | 0x08, 0666, 0);
stream.write(data, data.length);
stream.close();
Вместо utf8 можно указать и windows-1251, конечно...
Powered by POEM™ Engine Copyright © 2002-2005