Node.js - 表达路线中的特殊字符 (/campañas)
Posted
技术标签:
【中文标题】Node.js - 表达路线中的特殊字符 (/campañas)【英文标题】:Node.js - Express special characters in routes (/campañas) 【发布时间】:2013-02-25 03:12:02 【问题描述】:我在尝试使用 Express 框架在 Node JS 中设置路由时遇到问题。
我的路线是这条:
app.get('/campaña/nueva', sms.nueva);
但我无法让它工作,因为邪恶的“Ñ”(它与“N”一起工作)
我用了一段时间的codeigniter,你可以设置你想要启用或禁用的字符 你们知道在节点中启用它的任何解决方法或方法吗?
【问题讨论】:
你可以将 ñ URI 编码成 %C3%B1 【参考方案1】:我认为您需要同时处理 URL 编码和可能的 UTF-8(也可能是 Latin-1)变体。检查以下内容:
您的客户(浏览器)如何发送 URL?
URL encoded 为%C3%B1
?
chrome 和 firefox 发送 %C3%B1
编码
我认为这是主要且合规的行为
Unicode ?
我使用 curl
进行了测试,它看起来发送了一个字符,我认为这就是它从我的终端获得的任何编码,可能是 UTF-8。
在此基础上,尝试调整您的路线。您可以使用正则表达式或显式列表
.
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)
【讨论】:
以上是关于Node.js - 表达路线中的特殊字符 (/campañas)的主要内容,如果未能解决你的问题,请参考以下文章