Кодировка игнорируется в 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 );
});