Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/node.js/37.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 为什么Node.js V6无法解析url的法语单词?_Javascript_Node.js_Express_Urlencode - Fatal编程技术网

Javascript 为什么Node.js V6无法解析url的法语单词?

Javascript 为什么Node.js V6无法解析url的法语单词?,javascript,node.js,express,urlencode,Javascript,Node.js,Express,Urlencode,我遇到了一个问题,这个带有法语单词的url不能在节点V6.10.0中解析,但是可以在节点V0.10.42下正确解析 下面是我的代码的更多细节 Express的中间件 app.use bodyParser.urlencoded({ extended: false }) app.use bodyParser.json({ limit: '20mb' }) app.use bodyParser.urlencoded({ limit: '20mb', extended: false }) 并在上述

我遇到了一个问题,这个带有法语单词的url不能在节点V6.10.0中解析,但是可以在节点V0.10.42下正确解析

下面是我的代码的更多细节

  • Express的中间件

    app.use bodyParser.urlencoded({ extended: false })
    app.use bodyParser.json({ limit: '20mb' })
    app.use bodyParser.urlencoded({ limit: '20mb', extended: false })
    
  • 并在上述url路由器中输出
    字符

    router = express.Router()
    router.get '/share/:lang', (req, res, next) ->
         console.log(req.query.chars)
    
我使用
curl'localhost:4020/share/Fr?chars=ECYCÉDN'
测试此服务器,结果如下所示

  • 节点v0.10.42

    {“chars”:“ECYCÉDN”}

  • 节点v6.10.0

    {“chars”:“ECYCÃDN”}

快速版本是
4.15.2

我想知道为什么在NodeV6.10.0下无法正确解析这个法语单词

我认为这可能是字符编码的问题。但是,我尝试使用的是
querystring.unescape
querystring.escape
of,但效果不佳


更新


当我试图在路由器
'/share/:lang'
中输出
console.log(JSON.stringify(req.query))
时,结果是
{“chars”:“ECYCÃDN”}
字符的长度是
8

这应该不需要超过10行的代码才能显示为一个整体。请更新您的问题,使其不再只是几行代码,而是一段可运行的代码,并用一小段显示依赖关系-Node 0.10是Node的过时版本,其中的代码是否工作基本上没有意义:Node 6和Express存在问题。大概是Express 4,但在您显示完整代码并列出所使用的依赖项及其版本之前,我们无法知道。
require('querystring')。parse('chars=ECYCÉDN')
在节点v7.7.1和v6.10.3中对我很好。我同意@Mike'Pomax'Kamermans的观点,如果没有一个独立的测试用例,这个问题有点难以回答。我认为
bodyparser
与解析
querystring
没有任何关系。您确定问题出在节点内部,而不是,例如用于查看
控制台的shell
输出吗?请尝试记录
req.query.chars.length
。@zangw:您能测试我评论中的代码以确定问题是与node还是与express有关吗?您是否可以尝试使用web浏览器而不是curl来发送请求?我认为在查询中使用原始字节是无效的,因为Chrome percent在将unicode字符串发送到服务器之前对其进行UTF-8编码。