Кодировка игнорируется в fs.readFile

Я пытаюсь прочитать содержимое файла свойств в node. это мой звонок:

fs.readFile("server/config.properties", {encoding: 'utf8'}, function(err, data ) {
   console.log( data );
});

Консоль печатает буфер:

<Buffer 74 69 74 69 20 3d 20 74 6f 74 6f 0a 74 61 74 61 20 3d 20 74 75 74 75>

когда я заменяю код следующим:

fs.readFile("server/config.properties", function(err, data ) {
   console.log( data.toString('utf8') );
});

он отлично работает. Но node документация говорит, что String преобразуется в utf8, если кодировка передается в параметрах

вывод node --version равен v0.10.2

Что мне здесь не хватает?

Благодарю вас за поддержку.

Ответы

Ответ 1

В зависимости от версии Node, которую вы используете, аргумент может быть только encoding:

fs.readFile("server/config.properties", 'utf8', function(err, data ) {
   console.log( data );
});

Второй аргумент изменился на options с v0.10:

  • FS readFile(), writeFile(), appendFile() и их синхронизирующие копии теперь принимают объект options (но старый API, строка encoding все еще поддерживается).

Для прежней документации:

Ответ 2

Вы должны изменить {encoding: 'utf8'} на {encoding: 'utf-8'}, например:

fs.readFile("server/config.properties", {encoding: 'utf-8'}, function(err, data ) {
console.log( data );
});