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)的主要内容,如果未能解决你的问题,请参考以下文章

node.js 表达 jsonp 返回 typeof

避免对 Node.js 中的存储过程进行 SQL 注入

$ .get jQuery中的特殊字符

在 Node JS 中为 WebSocket (ws) 使用自签名 CA 证书

GraphQL 模式中的特殊字符

python学习之路——基础篇模块(续)