Tag: 字符编码

使用node.js从windows-1250编码的网页获取正确的string

我试图从网页上刮取一些数据,但是我遇到了字符编码的问题。 该网页指出,它的编码是: <meta http-equiv="Content-Type" content="text/html; charset=windows-1250">当我用铬浏览它设置编码为Windows-1250和一切看起来不错。 由于没有Windows-1250编码/解码节点stream(和utf8没有工作),我发现了一个iconv-lite包应该能够很容易地在不同的编码之间转换。 但是,我将响应保存到文件(或输出到控制台)后,仍然收到错误的字符。 我也尝试了不同的编码,本地节点缓冲区编码,设置标题与我在chrome中看到的相同( Accept-Charset': 'ISO-8859-1,utf-8;q=0.7,*;q=0.3 )没有什么似乎正常工作。 你可以在这里看到整个代码https://gist.github.com/4110999 。 我想我缺less关于编码如何工作的一些根本性的东西,所以任何帮助如何获得正确的字符的数据将不胜感激。 编辑: 如果是软件包问题,还尝试了node-iconv软件包。 将第51行更改为: var decoder = new Iconv_native('WINDOWS-1250', 'UTF-8'); var decoded = decoder.convert(body).toString(); 但仍然得到相同的结果。

如何将数据转换为utf-8在node.js?

我用express来使用node.js。 我用Mongoose从MongoDB中读取数据,并用res.send(data)以正常的方式传递它。 不幸的是,一些请求交付失败。 即使如此,头文件说编码是utf-8,在某些情况下它似乎是ANSI,导致jsonpcallback函数失败并出现错误。 您可以在此页面重现错误: http : //like-my-style.com/# ! single/9837034 。 jsonp调用仅在某些产品上失败,其中大部分(也是具有特殊字符的)工作正常。 我怎样才能确保给定的string编码utf-8在node.js?

如何在nodejs javascript中使用nodejs-iconv模块(或其他解决scheme)将字符编码从CP932转换为UTF-8,

我试图将string从CP932(aka Windows-31J)转换为javascript中的utf8。 基本上,我正在爬取一个忽略请求头中的utf-8请求的站点,并返回cp932编码的文本(即使html元标记表示页面是shift_jis)。 无论如何,我有整个页面存储在一个名为“HTML”的stringvariables。 从那里我试图将其转换为UTF8使用此代码: var Iconv = require('iconv').Iconv; var conv = new Iconv('CP932', 'UTF-8//TRANSLIT//IGNORE'); var myBuffer = new Buffer(html.length * 3); myBuffer.write(html, 0, 'utf8') var utf8html = (conv.convert(myBuffer)).toString('utf8'); 结果不是它应该是什么。 例如,string“感觉·情报”(感兴趣的信息)出来了:“这是一个真实的故事,ソスRソス〜(ソスソスソスEソスソスソスソス)“ 如果我删除// TRANSLIT // IGNORE(这应该导致它返回相似字符的缺less字符,并失败,省略非转码字符),我得到这个错误:错误:EILSEQ,非法字符序列。 我愿意使用任何可以在nodejs中实现的解决scheme,但是我的search结果并没有在nodejs-iconv模块之外获得许多选项。 nodejs-iconv ref: https : //github.com/bnoordhuis/node-iconv 谢谢! 编辑24.06.2011:我已经在Java中实现了一个解决scheme。 不过,如果有人可以解决这个问题,我仍然对这个问题的JavaScript解决scheme感兴趣。

响应编码与node.js“请求”模块

我正在尝试从BingsearchAPI获取数据,而且由于现有的库似乎基于旧的停用的API,所以我尝试使用request库,这似乎是最常见的库。 我的代码看起来像 var SKEY = "myKey…." , ServiceRootURL = 'https://api.datamarket.azure.com/Bing/Search/v1/Composite'; function getBingData(query, top, skip, cb) { var params = { Sources: "'web'", Query: "'"+query+"'", '$format': "JSON", '$top': top, '$skip': skip }, req = request.get(ServiceRootURL).auth(SKEY, SKEY, false).qs(params); request(req, cb) } getBingData("bookline.hu", 50, 0, someCallbackWhichParsesTheBody) Bing返回一些JSON,我可以使用它, 但如果响应正文包含大量的非ASCII字符JSON.parse抱怨该string格式不正确。 我尝试切换到一个ATOM内容types,但没有区别,该XML是无效的。 检查request()callback中提供的响应主体实际上显示错误的代码。 所以我尝试了一些Python代码的相同的请求,似乎一直工作正常。 以供参考: r = requests.get( 'https://api.datamarket.azure.com/Bing/Search/v1/Composite?Sources=%27web%27&Query=%27sexy%20cosplay%20girls%27&$format=json', auth=HTTPBasicAuth(SKEY,SKEY)) stuffWithResponse(r.json()) […]

http.get和ISO-8859-1编码响应

我即将写一个RSS提要提取器,并坚持一些字符集问题。 与编码相比,加载和parsing提要相当容易。 我使用http.get加载feed,并且将每个数据事件放在一起。 后来我用npm-lib的feedparserparsing了整个string,它与给定的string一起工作正常。 不幸的是,我习惯于像php中的utf8_encode()函数,我在node.js中错过了它们,所以我坚持使用Iconv,它目前没有做我想做的事情。 没有编码,有几个UTF8?图标错误的字符集,与iconv,stringparsing错误:/ 目前我正在分隔编码每个string: //var encoding ≈ ISO-8859-1 etc. (Is the right one, checked with docs etc.) // Shortend version var iconv = new Iconv(encoding, 'UTF-8'); parser.on('article', function(article){ var object = { title : iconv.convert(article.title).toString('UTF-8'), description : iconv.convert(article.summary).toString('UTF-8') } Articles.push(object); }); 我应该开始用数据缓冲区编码还是以后用完整的string编码? 谢谢! PS:编码是通过parsingxml的头部来确定的 如何使node.js中的编码更容易?

如何在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/');