【问题标题】:NodeJS Express encodes the URL - how to decodeNodeJS Express 对 URL 进行编码 - 如何解码
【发布时间】:2016-01-03 12:44:50
【问题描述】:

我在 Express 中使用 NodeJS,当我在 URL 中使用外来字符时,它们会自动进行编码。

如何将其解码回原始字符串?

在调用 NodeJS 之前,我会转义字符。

所以字符串:אובמה

变成%u05D0%u05D5%u05D1%u05DE%u05D4

整个 URL 现在看起来像:http://localhost:32323/?query=%u05D0%u05D5%u05D1%u05DE%u05D4

现在在我的 NodeJS 中,我得到了转义字符串 %u05D0%u05D5%u05D1%u05DE%u05D4

这是相关代码:

var url_parts = url.parse(req.url, true);
var params = url_parts.query;
var query = params.query; // '%u05D0%u05D5%u05D1%u05DE%u05D4'

我已经尝试过 urlquerystring 库,但似乎没有什么适合我的情况。

querystring.unescape(query); // still '%u05D0%u05D5%u05D1%u05DE%u05D4'

【问题讨论】:

    标签: node.js express escaping


    【解决方案1】:

    16/03/18 更新

    escapeunescapedeprecated

    使用:
    encodeURIComponent('אובמה') // %D7%90%D7%95%D7%91%D7%9E%D7%94
    decodeURIComponent('%D7%90%D7%95%D7%91%D7%9E%D7%94') // אובמה

    旧答案

    unescape('%u05D0%u05D5%u05D1%u05DE%u05D4')"אובמה"

    试试:

    var querystring = unescape(query);

    【讨论】:

    【解决方案2】:

    您应该使用decodeURI()encodeURI() 对带有外来字符的URL 进行编码/解码。

    用法:

    var query = 'http://google.com';
    query = encodeURI(query);
    query = decodeURI(query); // http://google.com
    

    参考 MDN:

    https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/decodeURI

    【讨论】:

    • 我使用的是 Express(如上所述),我只有部分 URL 和参数。所以decodeURI(query) 返回一个malformed uri 错误。在这种情况下,我不知道如何使用它。
    • 使用encodeURIComponentdecodeURIComponent。如果您没有需要编码的完整 URI,这些将起作用。
    【解决方案3】:
    #**update may-2020**
    # how to use an encoder/decoder on node js
    ### I am writing my answer due to I have noisy data I spend 4 hour to fixed
    
    data email   input = myemail@gmail.com
    data URL input = /us/home
    
    ```
    decodeURI function that only decodes a URL special character 
    
      email output =>myemail%40gmail.com 
      url output => %2Fus%2F
    
    using decodeURIComponent 
      email output = > myemail@gmail.com
      url output => /us/
    ```
    here some clarification where you can use decodeURI and  decodeURIComponent   a fucntion 
    

    【讨论】:

    • 此答案不会对其他答案添加任何内容,此外还不清楚且令人困惑。为什么一切都格式化为代码?提到的澄清在哪里?它声明它将解释如何使用编码,但仅引用 decodeURIComponent end 即使没有真正显示如何使用它。它浪费了人们的时间,甚至可能使他们感到困惑。
    • 这是一个答案吗?
    猜你喜欢
    • 2013-03-04
    • 2014-12-25
    • 2012-04-06
    • 1970-01-01
    • 1970-01-01
    • 2011-04-03
    • 1970-01-01
    • 2018-06-30
    • 2011-08-30
    相关资源
    最近更新 更多