Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 20.02.2016, 04:01
Новичок на форуме
Отправить личное сообщение для Перевозчик Посмотреть профиль Найти все сообщения от Перевозчик
 
Регистрация: 20.02.2016
Сообщений: 2

Синхронное чтение файла readSync
При попытке синхронного чтения построчно данные считываются неточно(при асинхронном чтении все нормально).
Примерный код
fs=require('fs');
var op=fs.openSync("new.txt","r+",777);
var pos=0; var line=[];
var rl=fs.readSync(op,100,pos);
line.push(rl[0]);
pos=pos+rl[1];
rl=fs.readSync(op,100,pos);
.....

 fs.closeSync(op);


Суть проблемы: текст латинскими буквами считывается корректно всегда.
Текст кириллицей считывается корректно когда скачиваешь файл в одну строку (Одна операция к примеру -readSync(op,10000,0)).
При порционном чтении многострочного кириллического текста или (смешанного) возникают отдельные кракозябры в кириллическом тексте как раз в районе стыка "порций"-как я понимаю.
Это баг или что то неверно делаю?

Последний раз редактировалось Перевозчик, 20.02.2016 в 04:04.
Ответить с цитированием
  #2 (permalink)  
Старый 20.02.2016, 17:15
Новичок на форуме
Отправить личное сообщение для Перевозчик Посмотреть профиль Найти все сообщения от Перевозчик
 
Регистрация: 20.02.2016
Сообщений: 2

Решение найдено - естественно надо все делать через буфер - иначе правильно склеить мультибайтные символы не получается
Код примерно такой (для порционного чтения без разбивки на строчки):
var buf=new Buffer(400,"utf8"); 
var op=fs.openSync("new.txt","r+",777);
var stripBom=require('strip-bom');

var rl=fs.readSync(op,buf,0,20,0);
var ofs=rl;
while (rl==20){
rl=fs.readSync(op,buf,ofs,20);
ofs+=rl;
}
var result=stripBom(buf.toString("utf8",0,ofs));

Последний раз редактировалось Перевозчик, 20.02.2016 в 17:21.
Ответить с цитированием
Ответ


Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
File API Чтение и обработка локального файла Uncle_Co Events/DOM/Window 0 31.12.2014 18:01
Чтение из тектового файла Jackky Общие вопросы Javascript 14 30.06.2012 01:00
Чтение и запись с txt или csv файла vitaver AJAX и COMET 0 23.12.2010 20:43
Чтение файла средствами javascript DVVID Общие вопросы Javascript 4 05.04.2010 15:00
чтение из случайного файла lesik Общие вопросы Javascript 7 07.07.2008 17:24