【问题标题】:Node.js - Express special characters in routes (/campañas)Node.js - 表达路线中的特殊字符 (/campañas)
【发布时间】:2013-02-25 03:12:02
【问题描述】:

我在尝试使用 Express 框架在 Node JS 中设置路由时遇到问题。

我的路线是这条:

app.get('/campaña/nueva', sms.nueva);

但我无法让它工作,因为邪恶的“Ñ”(它与“N”一起工作)

我用了一段时间的codeigniter,你可以设置你想要启用或禁用的字符 你们知道在节点中启用它的任何解决方法或方法吗?

【问题讨论】:

  • 你可以将 ñ URI 编码成 %C3%B1

标签: node.js express routes character


【解决方案1】:

我认为您需要同时处理 URL 编码和可能的 UTF-8(也可能是 Latin-1)变体。检查以下内容:

  1. 您的客户(浏览器)如何发送 URL?

    • URL encoded%C3%B1
      • chrome 和 firefox 发送 %C3%B1 编码
      • 我认为这是主要且合规的行为
    • Unicode ?
      • 我使用 curl 进行了测试,它看起来发送了一个字符,我认为这就是它从我的终端获得的任何编码,可能是 UTF-8。
  2. 在此基础上,尝试调整您的路线。您可以使用正则表达式或显式列表

.

app.get('/campaña/nueva', sms.nueva)
app.get('/campa%c3%b1a/nueva', sms.nueva)
//Or for convenience if you like
app.get('/' + encodeURIComponent('campaña') + '/nueva', sms.nueva) 

我的猜测是大多数浏览器最终都会发送 URL 编码的版本,所以你可能只使用最后一个版本。

【讨论】:

    【解决方案2】:

    我在路由中遇到了与$ 相同的问题。 URL 编码字符在我的情况下不起作用,但转义一个起作用。

    所以我结束了

    app.get('/\\$myRoute', function (req, res) {
    
    }
    

    【讨论】:

      猜你喜欢
      • 2011-12-06
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-08-14
      • 2012-05-18
      • 2016-10-10
      • 2019-01-09
      相关资源
      最近更新 更多