Список кодировок этого узла.Яш поддерживает
мне нужно прочитать файл, который закодирован с ISO-8859-1 (также называемый latin1), что-то вроде этого:
var file_contents = fs.readFileSync("test_data.html", "latin1");
однако узел жалуется на то, что" latin1 "или" ISO-8859-1"не являются допустимой кодировкой ("ошибка: неизвестная кодировка").
какие кодировки не readFileSync принимаете?
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