处理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服务。

我使用iconviconv-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和Express都是JavaScript,你试过简单的使用decodeURIComponent('punk'd')吗? 它在我看来,它只是一个标准的编码的URI。 我想你是从iconv得到奇怪的输出,因为你是从错误的编码转换。