Tag: 编码

readline-sync在Windows上不使用正确的编码

我正在使用readline-sync向我的noedejs命令行应用程序的用户询问一些信息。 在我的Linuxterminal中,德语变音符号(öäü)可以正常工作,但是当在windows shell(powershell或cmd)上读取input时,尽pipe将编码设置为utf8 : var rls = require('readline-sync'); // set encoding for rls: rls.setDefaultOptions({encoding: 'utf8'}); … var test = rls.question("Input name: "); console.log("Created: " + test); 在窗口输出: PS > tim test Input name: töst Created: t st 这也是非常有趣的参数,我通过命令行parameter passing给我的应用程序将有正确的字符。 这是一个错误? 我该如何解决?

Nodejs转换传入streamWindows 1252或UTF-8

我创build了nodesjs net服务器,发送者在Windows 1252发送数据。 题: 我怎样才能将数据从Windows 1252转换为我的应用程序的其余部分所需的utf-8 ? 根据: https : //nodejs.org/api/stream.html#stream_readable_setencoding_encoding 调用此函数以使stream返回指定编码的string而不是Buffer对象。 client.setEncoding 'utf8'应该以utf-8格式返回一个string,但是我仍然会在我的string中得到questionmarks而不是例如ä,ö,ü 码 exports.createServer = (io) -> server = net.createServer( { allowHalfOpen: true, pauseOnConnect: false }, (socket)-> createClient(socket, io) ) server.listen portHl7 server.on('error', (err) -> if (err.code == 'EADDRINUSE') console.log 'Address in use, retrying…' setTimeout( () -> server.close() self.createServer() 1000 ) ) server.on('close', […]

Powershell西里尔input编码通过节点js

我试图使西里尔文本到语音节点js模块。 我使用node-powershell来运行.NET TTS命令。 它可以很好地与拉丁符号一起使用,但不会对任何西里尔字母做出反应。 但是,如果我直接input命令到Powershell控制台 – 它适用于西里尔和拉丁符号。 所以我提出了一个问题,即node.js输出编码。 Node.js脚本: var sayWin = (text) => { var Shell = require('node-powershell'); var shell = new Shell({ inputEncoding: 'binary' //tried different endcoding }); shell.addCommand('Add-Type -AssemblyName System.speech'); shell.addCommand('$speak = New-Object System.Speech.Synthesis.SpeechSynthesizer'); shell.addCommand('$speak.Speak("' + text + '")'); shell.on('output', data => { console.log("data", data); }); return shell.invoke(); } sayWin('latin'); //talk sayWin('кирилица'); […]

使用Mocha生成节点应用程序testing和LCOV报告

我的团队最近开始研究一个完全由ES6编写的先前存在的Node应用程序(在我们开始工作之前,它已经通过了几个不同的开发者)。 该应用程序使用摩卡和Nyan作为摩卡记者进行了最低程度的unit testing。 package.json文件已经包含以下命令来运行testing: "test": "node ./node_modules/mocha/bin/mocha –compilers js:babel-core/register ./test/**/*.spec.js" 作为我们部署周期的一部分,我们使用Travis和Codacy的CI / CDpipe道。 因此,为了启用Codacy的“代码覆盖”部分,我需要对应用程序库和package.json文件进行一些更改。 基本的想法是让摩卡生成一个.lcov文件,然后通过Travis构build脚本传送到Codacy。 做了一些研究后,我把以下内容成功地生成了lcov文件: "build-test": "node ./node_modules/mocha/bin/mocha -R mocha-lcov-reporter > coverage/coverage.lcov –compilers js:babel-core/register ./test/**/*.spec.js –reporter nyan" 问题是,我得到了.lcov文件的Codacyparsing错误。 我查看了其他项目的lcov文件,似乎还有额外的数据在我生成的。 这里的参考是生成的lcov文件: 0 0 0 [4A[5C- [5C- [5C- [5C- [4A[6C_,——, [6C_| /\_/\ [6C^|__( – .-) [6C "" "" [4ACONSTRUCTOR 1 0 0 [4A[5C-_ [5C-_ [5C-_ [5C-_ […]

crypto createHMAC输出根据nodejs版本的不同而不同

在升级我的节点版本时,我遇到了encryption模块问题。 创build的HMAC取决于节点的版本。 您会在下面find重现问题的代码。 如果我将密钥编码为BASE64(或任何),则HMAC不依赖于node.js版本。 如果我把它编码为二进制,如果我改变我的node.js版本,HMAC是不同的。 [编辑]根据为什么crypto.createHash在新版本中返回不同的输出? 调用update函数时添加了编码 代码片段 "use strict"; const crypto = require('crypto'); console.log(process.version); let key = '5ece799aa73a7a8e687876f8e0eabe2e200b967ef5728d845f72fc9ea27dbcd90cd4e06e8bc90d823ac8a54ce91f68ca37fc2e7bbf3f5ef9d82b4c6b938f1936'; let _key64 = (new Buffer(key, 'hex')).toString('base64'); console.log("B64 KEY: "+crypto.createHmac('sha512', _key64).update("hey", "binary").digest('hex').toUpperCase()); let _keyBin = (new Buffer(key, 'hex')).toString('binary'); console.log("BIN KEY: "+crypto.createHmac('sha512', _keyBin).update("hey", "binary").digest('hex').toUpperCase()); 输出是以下两个版本的node.js v5.6.0 B64 KEY: 0DC11C737E575B17DD575042F8F372E3D63A86C3B56C06FB74C9B0AB8E96A5FC8A2DC33667280DC5B306C93AA3DECBAF0D8EDE56F3666C11BFC25A70CFC027D0 BIN KEY: E5A9F813D9AA64A6791BEA91035553FFC730DBE635D0CE7AC722C0195DFDD77A969323FDDFB4E5054E59073DAE9B9BF00CFF73CF20F2FACEE01F79F25E7B9303 v8.1.4 B64 KEY: 0DC11C737E575B17DD575042F8F372E3D63A86C3B56C06FB74C9B0AB8E96A5FC8A2DC33667280DC5B306C93AA3DECBAF0D8EDE56F3666C11BFC25A70CFC027D0 BIN KEY: […]

处理node.js / express中的windows-1250 URI

我的应用程序依赖于一个web服务来形成它的URI,所以有时它会出现(我相信是)一个windows-1250编码的string( /punk%92d )和expression失败,如下所示: 连接400错误:无法在Layer.match解码param'punk%92d' 所以我/punk'd每个链接转换成utf-8(例如: /punk'd ,所以不会引用冒犯的内容),然后再回到windows-1250来处理外部的web服务。 我使用iconv和iconv-lite方法尝试了这种方法,但是结果总是出现问题: /punk d /punk d等 这是一个使用iconv的示例: var str = 'punk'd'; var buf = new Buffer(str.toString('binary'), 'binary'); console.log(new Iconv('UTF-8', 'Windows-1250').convert(buf).toString('binary')); …和iconv-lite: console.log(iconv.decode(new Buffer(str), 'win1250')); 我知道使用binary是一个坏的方法,但我希望有什么, 什么都可以做的工作。 我明显地尝试了这个代码的多种变体,因为我对Buffers了解是有限的,更简单的事情是行不通的,比如: console.log(new Buffer('punk'd').toString('utf-8')); 所以我感兴趣的方式是处理expression式中的URI中的编码string,或者在node.js中转换它们的有效方法。

Node Webkit – writeFileSync中的编码选项不起作用?

我是初学者。 我想用UTF8编码写一个包含中文字符的HTML文件。 我从互联网上find了下面的代码。 fs.writeFileSync(target, generateHTML(), "utf8"); 虽然当我阅读文档时,并没有明确说我可以添加一个编码标志。 generateHTML()返回HTMLstring。 但是,以下字符“返回”变成这样的:文件中的“æ'»å<!”。 我相信这是一个编码错误。 我使用错误的function? 如何使用正确的utf-8同步写入文件? 编辑 fs.writeFileSync可以很好地工作,但是当内容作为一个函数返回的时候不行。 请试试这个: function generateHTML(){return "返回"} fs.writeFileSync("index.html", generateHTML(), "utf8"); 该文件包含ԏ -8格式的which,这不是预期的内容。 编辑 我testing了这与我安装的node.js版本,它工作正常。 这似乎与node webkit有关。 我将在稍后join版本。 这里的时间对我来说不方便。

如何使用nodejs在控制台中打印一个utf8string

我想在控制台中使用nodejs在保加利亚打印一个string。 我有一个index.js文件,它可以: console.log('Текст на български.'); 当我在控制台中运行它:node index.js它只打印 – '??????????' 我正在使用Webstorm,并将IDE和项目文件编码设置设置为utf8。 我也试过: var strInBulgarian = 'Текст на български.'; console.log(strInBulgarian.toString('utf8')); 同样的结果。 如果我在nodejs REPL中运行以下命令,我会得到正确的结果: console.log('Текст на български.'); 这导致我相信,我得到'???????' 是由于文件编码,但它设置为utf8。 有任何想法吗? 这里是Webstorm中设置的截图。 嗯,现在我把所有的设置改为UTF8保加利亚文中的文字在我的评论中改为'?????' 这之前还好。 有些是绝对不对的。 当我从Notepad ++创build一个index.js文件,并将编码设置为utf8时,我没有任何问题。 Webstorm的设置不正确。

如何在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)? 感谢和抱歉我的英语;)

简化/编码JSON组合键

我有一个独特的复合键,它是一个简单的串联JSON结构与Date连接的混合体。 这是一个相当复杂的外观ID。 "{ foo: bar}Sun Apr 22 2012 12:58:01 GMT+0100 (BST)" 我需要一个将string转换为字符范围较小的过程。 最好只是字母数字。 这个过程不一定是可逆的。