Tag: 字符编码

自动检测Node.js中的字符编码

我正在寻找一种方法来准确检测SRT字幕文件的字符编码,对于给定的(用户select的)语言。 我目前正在使用jschardet库进行检测,不幸的是经常错误。 var fs = require("fs"); var jschardet = require("jschardet"); var iconv = require('iconv-lite'); var loadFile = function(path, langCode){ var content = fs.readFileSync(path); var encoding = jschardet.detect(content).encoding.toLowerCase(); return iconv.decode(content, encoding); }; (添加这个只是为了防止我的代码有问题) 有什么比jschardet更准确吗? 也许是一些也接受语言作为论据的东西? 我想这个信息可以提高准确性,但我不熟悉任何接受语言作为参数的图书馆。

为什么Node.js将BOM字符转换为0xFE 0xFF?

我一直在使用节点的fs.readFileSync() ,传递"utf8"作为编码读取input。 当文件包含UTF8(0xEF 0xBF 0xBB)中的BOM字符时 ,它会将其转换为字节序列0xFE 0xFF,而不是Unicode编码。 为什么这样做? 为什么不以UTF8保存BOM的原始序列?

node.js从utf8文件创buildhex缓冲区

我有一个.h264文件,看起来像这样: 0000 0001 674d 401f 95a0 1001 86c0 5283 0203 2000 007d 0000 1d4c 1080 0000 0001 68ee 3c80 0000 0001 65b8 041f fff6 91f2 86db 23e0 5147 1a83 b8d4 3141 87b1 43b8 e329 5fd3 5937 bf10 485f af32 4e74 6138 5611 33e3 0778 e035 85ca 2c00 9320 ffbb 45be 09f8 2e51 a039 9f8c fe17 […]

节点js处理西里尔文编码有什么问题

如果你拿这个非常基本的,非常简单的例子 节点网页: var http = require('http'); http.createServer(function (req, res) { res.writeHead(200, {'Content-Type': 'text/plain'}); res.end('Hello World\n'); }).listen(1337, '127.0.0.1'); console.log('Server running at http://127.0.0.1:1337/'); 这很好用,但是尝试打印一些西里尔字母,如下所示: var http = require('http'); http.createServer(function (req, res) { res.writeHead(200, {'Content-Type': 'text/plain'}); res.end('Здравей Свят\n'); }).listen(1337, '127.0.0.1'); console.log('Server running at http://127.0.0.1:1337/'); 你只会得到严重的解码字符。 我尝试了各种不同的内容types,内容长度,雇用节点iconv模块和其他东西的设置标题的组合,但我发现我的圈子。 基本上,我有基于意思的networking应用程序,我只是想从我的HTML /玉文件显示西里尔语文本到客户端浏览器。 已经几天挖了,没有结果。 我相信如果有人能说出为了使上面的代码工作应该做什么,我会适应它到我的应用程序(因为我已经非常确定,问题来自一些较低的水平,而不是从快递midlewares等..) 据我了解正确 – 这似乎是一个老问题,从某种程度上来说,javascript / v8是如何处理utf-8的。 我看到很多其他的post都抱怨类似的问题,但是因为我试图去适应每个人都没有运气,我想我会冒险发表一个重复的问题,并有我的机会… 我访问的其他一些post/主题: 使用node.js编码错误 […]

在nodejs的post请求中设置charset

我想通过请求模块使用euc-kr字符集将表单数据发送到某个网站。 而且我也使用iconv-lite模块,因为nodejs支持的字符集不是很多。 无论如何,网站使用euc-kr字符集,所以我必须处理表单数据的编码(节点的默认字符集是utf-8)。 但是这样做效果不好,我试图改变一些选项,但是我现在一直呆着,所以你能告诉我一些提示。 // added module request, iconv-lite(extendNodeEncoding) already. function postDocumentForm() { //Lets configure and request request({ url: 'http://finance.naver.com/item/board_act.nhn', //URL to hit headers: { 'Content-Type': 'content=text/html; charset=euc-kr' }, method: 'POST', encoding: 'euc-kr', form: { code:'000215', mode: 'write', temp: '', keyCount: '0', title: "폼 데이터 중 일부가 한글일 때", opinion: '0', body:'인코딩이 제대로 되지 않고 […]

TFS(内部部署)编译输出显示错误的字符编码

我们有TFS2015和build立定义,如下所示: 当我触发构build我得到输出错误的字符编码: 2016-09-07T11:40:29.2722404Z ΓööΓöÇΓöÇ readable-stream@2.1.5 (buffer-shims@1.0.0, inherits@2.0.1, string_decoder@0.10.31, core-util-is@1.0.2, util-deprecate@1.0.2, process-nextick-args@1.0.7, isarray@1.0.0) 2016-09-07T11:40:29.2722404Z run-sequence@1.2.2 node_modules\run-sequence 2016-09-07T11:40:29.2722404Z ΓööΓöÇΓöÇ chalk@1.1.3 (supports-color@2.0.0, escape-string-regexp@1.0.5, ansi-styles@2.2.1, strip-ansi@3.0.1, has-ansi@2.0.0) 2016-09-07T11:40:29.2722404Z vinyl-source-stream@1.1.0 node_modules\vinyl-source-stream 2016-09-07T11:40:29.2722404Z Γö£ΓöÇΓöÇ vinyl@0.4.6 (clone-stats@0.0.1, clone@0.2.0) 2016-09-07T11:40:29.2722404Z ΓööΓöÇΓöÇ through2@0.6.5 (xtend@4.0.1, readable-stream@1.0.34) 2016-09-07T11:40:29.2722404Z gulp-concat@2.6.0 node_modules\gulp-concat 2016-09-07T11:40:29.2762404Z Γö£ΓöÇΓöÇ concat-with-sourcemaps@1.0.4 (source-map@0.5.6) 2016-09-07T11:40:29.2762404Z ΓööΓöÇΓöÇ through2@0.6.5 (xtend@4.0.1, readable-stream@1.0.34) 2016-09-07T11:40:29.2762404Z vinyl-buffer@1.0.0 node_modules\vinyl-buffer 2016-09-07T11:40:29.2762404Z Γö£ΓöÇΓöÇ through2@0.6.5 (xtend@4.0.1, […]

如何在NodeJS中编码/解码字符集编码?

我有这个代码: request({ url: 'http://www.myurl.com/' }, function(error, response, html) { if (!error && response.statusCode == 200) { console.log($('title', html).text()); } }); 但Im爬行的网站可以有不同的字符集(utf8,iso-8859-1等)如何得到它和编码/解码的HTML总是正确的编码(UTF8)? 感谢和抱歉我的英语;)

如何在Node.js中stream式处理文件并将编码保持为ansi(windows-1252)

我使用Formidable将file upload到我的Node-js Web服务器(本地安装进行testing)。 该文件是在我上传之前在ansi(ISO-8859-1),它仍然是上传时,我用记事本++检查该文件。 var form = new formidable.IncomingForm(); form.parse(req, function(err, fields, files) { csv .fromPath(files.upfile.path, {headers: true}) .on("record", function(data){ console.log(data.adresse); }) .on("end", function(){ console.log("done"); }); res.end(console.log("form done")); }); 只要我使用stream或插件(在这种情况下,fast-csv)使用节点fsstream内容,编码是拙劣的。 看到下面的数据, 应该是丹麦字符ø。 {adresse: 'Niver?d By, Karlebo'} 谁能告诉我为什么? 更新: 它通过stream媒体上传的文件,并使用Iconv转换它。 router.post('/upload', function(req, res) { var form = new formidable.IncomingForm(); form.parse(req, function(err, fields, files) { console.log(files.upfile.path); var […]

node.js子分支进程编码

发送特殊字符(如ß)到node.js中的分叉subprocess不起作用。 看来,subprocess无法读取它。 我可以用一个非常简单的例子来展示它,在这个例子中,我将一个字符(“ß”)发送给分叉进程并返回。 parrent进程 var child = fork("render.js"); child.on('message', function (m) { res.send(m); }); //this does not work, works fine with normal 's' child.send("ß"); setTimeout(function () { child.kill(); res.send("Timeout error"); }, 5000); 和孩子的过程 process.on('message', function (m) { process.send(m) process.exit(); }); 为了完整,我在IIS中托pipe节点。

使用节点请求模块的UTF8字符编码

我有一个简单的应用程序,它使用jquery ajax请求发送表单数据到节点服务器,然后提交给第三方api节点js使用请求模块。 我遇到的问题是重音(和其他类似的)字符在到达第三方服务器时没有正确编码。 例如élogging为Ã 我相当确定这是与请求的设置,因为我绕过ajax调用时得到相同的结果。 以下是我正在使用的设置: HTML: <meta http-equiv="Content-type" content="text/html; charset=utf-8" /> jquery ajax设置: type : 'POST', url : '/api', data : formData, // A json object dataType : 'json', ContentType : 'text/html; charset=utf-8' 请求节点中的模块设置(Ajax post和请求发送之间的表单数据没有任何变化): request.post({ url: "https://testurl.com/api/", form: formData, headers: {'Content-Type': 'application/json; charset=utf-8'} } … 我已经阅读了各种SO解决scheme,但没有成功,所以任何build议不胜感激。