Articles of utf 8

将缓冲区base64 – > utf8编码为node.js

我的应用程序从GMail的Notes文件夹导入所有消息。 我使用imap npm模块。 使用从他们的github页面的例子,我得到一个消息的所有内容到一个缓冲区: stream.on('data', function(chunk) { count += chunk.length; buffer += chunk.toString('utf8'); }); 但是,我得到的是类似的句子 0KHQvdCw0YfQsNC70LAg0YHQvtC30LTQsNC10YLRgdGPINGA0LXRiNC10YLQutCwINC/0YDQvtGB 0YLRgNCw0L3RgdGC0LLQsCDQstC+0L7QsdGA0LDQttC10L3QuNGPLiZuYnNwOzxkaXY+PGJyPjwv ZGl2PjxkaXY+0JfQsNGC0LXQvCDQvdCwI (俄文错误转换) 我发现这些是用base64编码的文本片段,为了读取它们,我需要将它从base64转换为utf8。 有时也会有一个令人讨厌的人物出现 letting them f= all on her shoulders 你知道我怎样才能摆脱这两个问题? 谢谢!

Node.js将ISO8859-1编码为UTF-8

我有一个应用程序,允许用户坚持string到数据库,这些string可能包含表情符号。 我遇到的问题是一个表情符号,例如😊将被存储在MySQL中作为😊 当我使用PHP MySQL客户端检索这个string并将其呈现在Web浏览器中时,它可能会因为Content-Type设置为UTF-8而呈现罚款。 当我尝试读取node.js中的string时,我找回了我认为是ISO8859-1编码的字😊 。 桌上的字符集设置为latin1 ,这就是我从中获取ISO8859-1的地方。 在node.js中对string进行编码的正确方法是什么,以便我可以看到表情符号而不是由MySQL设置的编码。

POST数据中的node.js和utf-8

在使用Node.JS Web服务器时,我在解码POST数据中的UTF-8string时遇到问题。 看到这个完整的testing用例: require("http").createServer(function(request, response) { if (request.method != "POST") { response.writeHead(200, {'Content-Type': 'text/html; charset=utf-8'}); response.end('<html>'+ '<head><meta http-equiv="content-type" content="text/html; charset=utf-8"></head>'+ '<body>'+ '<form method="post">'+ '<input name="test" value="Grüße!"><input type="submit">'+ '</form></body></html>'); } else { console.log("CONTENT TYPE=",request.headers['content-type']); var body=""; request.on('data', function (data) { body += data; }); request.on('end', function () { console.log("POST BODY=",body); response.writeHead(200, {'Content-Type': 'text/plain; charset=utf-8'}); response.end("POST DATA:\n"+body+"\n—\nUNESCAPED:\n"+unescape(body)+ […]

为什么我不能在nodejs HTTP响应中写中文字符?

这是我的小代码: var http = require('http'); var port = 9002; var host_ip = '<my_ip>'; http.createServer(function (req, res) { var content = new Buffer("Hello 世界", "utf-8") console.log('request arrived'); res.writeHead(200, { 'Content-Encoding':'utf-8', 'charset' : 'utf-8', 'Content-Length': content.length, 'Content-Type': 'text/plain'}); res.end(content.toString('utf-8'),'utf-8'); }).listen(port, host_ip); console.log('server running at http://' + host_ip + ':' + port); 以前我只是让res.end发送“你好世界”,它运作良好。 然后我想稍微调整一下,把“世界”改成中文的“世界”,把标题中的“charset”内容types改为“utf-8”。 但在Chrome和Firefox中,我看到了这一点: hello 涓栫晫 然而,惊人的歌剧(11.61)确实显示了正确的结果hello […]

如何在node.js中捕获utf-8解码错误?

我刚刚发现Node(testing:v0.8.23,当前git:v0.11.3-pre) 忽略了其缓冲区处理中的任何解码错误 ,用'\ufffd' (Unicodereplace字符)静默地replace了任何非utf8字符,而不是抛出关于非utf8input的exception。 因此, fs.readFile , process.stdin.setEncoding和朋友为您屏蔽了一大类错误的input错误。 不失败,但真的应该: > notValidUTF8 = new Buffer([ 128 ], 'binary') <Buffer 80> > decodedAsUTF8 = notValidUTF8.toString('utf8') // no exception thrown here! ' ' > decodedAsUTF8 === '\ufffd' true '\ufffd'是一个非常有效的字符,可以在合法的utf8中出现(如同ef bf bd ),所以在error handling中基于这个结果显示猴子补丁是不平凡的。 挖掘更深一层,看起来这是源于节点只是推迟到V8的string,而这些又有上述行为,V8没有任何外部世界充满外部编码的数据。 是否有节点模块或其他,让我赶上utf-8解码错误,最好与上下文有关在inputstring或缓冲区中发现错误的上下文?

在从节点到Java的调用中实施utf8编码

我正在从一个节点中间层调用一个Java后端,并传递一个string作为查询参数。 一切都很好,直到使用非英文字母字符(例如:ř,ý)。 当Java收到这些字符时,会抛出: parse exception: org.eclipse.jetty.util.Utf8Appendable$NotUtf8Exception: Not valid UTF8! 这个电话是完美的: GET http://localhost:8000/server/name?name=smith 此调用失败,出现以上错误: GET http://localhost:8000/server/name?name=sořovský 我的问题涉及在哪里解决这个问题。 我已经find了这个节点的utf8编码器,并且正在考虑在将来调用我的Java层之前将我的string编码为utf8。 这是正确的方法,或者我应该在Java内做些什么? 请注意,这是我的相关请求头像: { … accept: 'application/json, text/plain, */*', 'accept-encoding': 'gzip, deflate, sdch', 'accept-language': 'en-US,en;q=0.8,el;q=0.6', … }

节点JSencryption,不能创build带有重音的字符的hmac

当我试图encryption的文本有重音字符(如ä,ï,ë)时,我在NodeJS中使用crypto.js生成正确的签名时遇到问题。 generateSignature = function (str, secKey) { var hmac = crypto.createHmac('sha1', secKey); var sig = hmac.update(str).digest('hex'); return sig; }; 如果'str'不包含重音字符(字符如ä,ï,ë),此函数将返回正确的HMAC签名。 如果文本中有重音字符,则不会返回正确的HMAC。 重音字符在UTF8编码是有效的,所以我不知道为什么encryption与他们有问题。 可能是这样,我需要以某种方式告诉encryption,我正在签署utf8编码的文本,但我不知道如何做到这一点。 在这篇文章中描述了完全相同的问题: NodeJS hmac摘要问题与口音然而,post本身以及答案对我来说是没有意义的(因为他们正在传递他们想要encryption的数据,走)。 以下是str和secKey的硬编码值的一个版本: var crypto = require('crypto'); str="äïë"; secKey="secret"; var hmac = crypto.createHmac('sha1', secKey); var sig = hmac.update(new Buffer(str, 'utf8')).digest('hex'); console.log("Sig: " + sig); console.log("Expected: 094b2ba039775bbf970a58e4a0a61b248953d30b"); // "Expected" was generated using […]

如何捕获node.js中的箭头键

什么是所有四个箭头键的utf8代码(上下左右)? 我正在学习node.js,我试图检测这些键是否被按下。 这是我所做的,但没有一个捕获箭头键…我是一个完整的node.js新手,所以我可能在这里做一些愚蠢的事情。 var stdin = process.stdin; stdin.setRawMode(true); stdin.resume(); stdin.setEncoding('utf8'); stdin.on('data', function(key){ if (key === '39') { process.stdout.write('right'); } if (key === 39) { process.stdout.write('right'); } if (key == '39') { process.stdout.write('right'); } if (key == 39) { process.stdout.write('right'); } if (key == '\u0003') { process.exit(); } // ctrl-c }); 谢谢。

Nodejs将string转换为UTF-8

从我的数据库即时获取以下string: Johan Öbert 应该说的是: Johan Öbert 我试图把它转换成utf-8像这样: nameString.toString("utf8"); 但仍然是同样的问题。 有任何想法吗?

如何在Node.js中获得UTF-8?

我如何获得我的API的UTF-8支持? 目前,一个string输出是这样的: name: "John D m" 代替: name: "John Döm" 结帐app.js如下: var express = require('express'), driver = require('./driver'); var app = express(); app.configure(function () { app.use(express.logger('dev')); app.use(express.bodyParser()); }); app.get('/drivers', driver.findAll); app.listen(3000); console.log('Up: http://127.0.0.1:3000/');