Список кодировок этого узла.Яш поддерживает



мне нужно прочитать файл, который закодирован с ISO-8859-1 (также называемый latin1), что-то вроде этого:



var file_contents = fs.readFileSync("test_data.html", "latin1");


однако узел жалуется на то, что" latin1 "или" ISO-8859-1"не являются допустимой кодировкой ("ошибка: неизвестная кодировка").



какие кодировки не readFileSync принимаете?

449   2  

2 ответов:

The список кодировок этот узел поддерживает изначально довольно короткий:

  • ascii
  • base64
  • binary
  • hex
  • ucs2/ucs-2/utf16le / utf-16le
  • utf8 / utf-8
  • latin1 (ISO8859-1,только в узел 6.4.0+)

Если вы используете более старую версию, чем 6.4.0, или не хотите иметь дело с кодировками, отличными от Unicode, вы можете перекодировать строка:

использовать iconv-lite перекодировать файлы:

var iconvlite = require('iconv-lite');
var fs = require('fs');

function readFileSync_encoding(filename, encoding) {
    var content = fs.readFileSync(filename);
    return iconvlite.decode(content, encoding);
}

в качестве альтернативы, используйте iconv:

var Iconv = require('iconv').Iconv;
var fs = require('fs');

function readFileSync_encoding(filename, encoding) {
    var content = fs.readFileSync(filename);
    var iconv = new Iconv(encoding, 'UTF-8');
    var buffer = iconv.convert(content);
    return buffer.toString('utf8');
}

Если вышеуказанное решение не работает для вас, возможно, можно получить тот же результат со следующим чистым кодом nodejs. Вышеизложенное не сработало для меня и привело к исключению компиляции при запуске "npm install iconv" на OSX:

npm install iconv

npm WARN package.json [email protected] No README.md file found!
npm http GET https://registry.npmjs.org/iconv
npm http 200 https://registry.npmjs.org/iconv
npm http GET https://registry.npmjs.org/iconv/-/iconv-2.0.4.tgz
npm http 200 https://registry.npmjs.org/iconv/-/iconv-2.0.4.tgz

> [email protected] install /Users/markboyd/git/portal/app/node_modules/iconv
> node-gyp rebuild

gyp http GET http://nodejs.org/dist/v0.10.1/node-v0.10.1.tar.gz
gyp http 200 http://nodejs.org/dist/v0.10.1/node-v0.10.1.tar.gz
xcode-select: Error: No Xcode is selected. Use xcode-select -switch <path-to-xcode>, or see the xcode-select manpage (man xcode-select) for further information.

fs.readFileSync () возвращает буфер, если кодировка не указана. И буфер имеет метод toString (), который преобразуется в UTF8, если не указана кодировка, дающая вам содержимое файла. См. документацию nodejs. Этот работать на меня.

Comments

    Ничего не найдено.