Node.js - 表示路线中的特殊字符(/campañas)

时间:2013-03-09 16:43:52

标签: node.js express routes character

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

我的路线就是这个:

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

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

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

2 个答案:

答案 0 :(得分:11)

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

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

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

  3. 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) 
    

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

答案 1 :(得分:2)

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

所以我最终得到了

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

}