7

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

我的路线是这样的:

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

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

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

4

2 回答 2

12

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

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

    • URL 编码%C3%B1?
      • chrome 和 firefox 发送%C3%B1编码
      • 我认为这是主导和顺从的行为
    • 统一码?
      • 我用它进行了测试,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 编码的版本,所以你可能只使用最后一个版本。

于 2013-03-09T18:11:46.217 回答
5

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

所以我结束了

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

}
于 2015-12-23T09:05:51.277 回答