Node服务端解析POST中文数据

当表单提交包含中文数据时,Node服务端使用decodeURI或者decodeURIComponent解析时可能会出现&#…的情况。

引入html-entities模块

//在项目的根目录中下载此模块
npm install html-entities --save


在node_modules中多出了html-entities模块,然后直接用就行。

以下是我的简单源代码

const http = require('http'),
  querystring = require('querystring'),
  Entities=require('html-entities').Html5Entities
http.createServer(function (req, res) {
  if (req.url === '/') {
    res.writeHead(200, {
      'Content-Type':'text/html'
    })
    res.end(['<form method="post" action="/url">',
      '<fieldset>',
      '<legend>form</legend>',
      '<input type="text" name="username"/>',
      '</fieldset>',
      '</form>'].join(''))
  } else if (req.url === '/url' && req.method == 'POST') {
    let body = ''
    req.on('data', function (data) {
      body += data
    })
    req.on('end', function () {
      res.writeHead(200, {
        'Content-Type': 'text/plain;charset=utf-8',
      })
      const obj = querystring.parse(body),
            entities = new Entities(),
            username=entities.decode(obj.username)
      console.log(body)
      console.log(username)
      res.end('hello '+username)
    })
  }
}).listen(3000)
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值