beardog 05.05.2012 18:39 16759805441336197348101189

Есть метод fs.readFile(), который, очевидно, читает файл. Получает имя файла, кодировку и колбек для обработки результата. Кодировку можно не указывать, она по умолчанию равна 'utf8'. Но нюанс: если кодировка явно не указана, в колбек данные прийдут в виде обьекта, а не строки.

1. gds 05.05.2012 19:19

а что, duck typing не работает? toString не прописали, или в чём вопрос?

2. beardoggds /1 05.05.2012 19:22 16759805441336197348101189

вопрос в том, что в случае буфера data[1] возвращает число, а в случае строки — символ

3. gdsbeardog /2 05.05.2012 19:29

то есть, даже несмотря на то, что буфер data может быть преобразован в строку, data[1] возвращает число? WAAAAAAAAT?

4. beardoggds /3 05.05.2012 19:34 16759805441336197348101189

Я не знаю, во что он может быть преобразован, я ж его не преобразовывал :) Просто в одном случае приходит массив чисел (что само по себе логично — вдруг я бинарный файл читаю), а в другом — строка. Поскольку у того и у другого есть [], программа может вроде как работать, но выдавать нечто странное.

5. gdsbeardog /4 05.05.2012 19:39

вот теперь окончательно понял проблему.
Пичалька.
Даже не знаю, что бы смог поделать в данном случае для надёжного решения проблемы. Переопределить метод так, чтобы ему, независимо от обстоятельств, передавался / не передавался аргумент с кодировкой?

6. beardoggds /5 05.05.2012 19:43 16759805441336197348101189

просто не забывать передавать аргумент с кодировкой

7. gdsbeardog /6 05.05.2012 19:48

охлол, не забывать. И таблицу перед глазами повесить, что ещё нужно не забывать. Отвратительное решение. Нужно системным образом исправлять это дело, хотя бы в своём коде.

8. kuroneko 08.05.2012 19:30 Psi+

> она по умолчанию равна 'utf8'
Нет, она не равна по умолчанию ничему. Если кодировка не указана, тебе придёт буфер с сырыми данными, без кодировки вообще, интерпретируй как хочешь. Читаем мануал. Стабильность модуля "fs" — 3, это значит, что API может измениться в будущих версиях. "Кодировка по умолчанию", вроде, была в readFile() когда-то в прошлом году.

9. beardogkuroneko /8 08.05.2012 19:37 26470819791336504932357194

дурацкое ощущение ложной памяти. Я вроде точно помню, что там было написано про умолчание, но сейчас полез проверить — нет такого :(

10. kuronekobeardog /9 08.05.2012 19:38 Psi+

Да, у меня так тоже бывает. Жалко, контроллер памяти в мозгу перепрошить нельзя.

Do you really want to delete ?