【问题标题】:Encode strange characters which are unable to be sent to API Node JS编码无法发送到 API Node JS 的奇怪字符
【发布时间】:2017-01-26 23:19:41
【问题描述】:

我的名字是 Juraj Čarnogurský。注意Č 字符。 我想将我的名字从一台服务器发送到 API。但是我的姓被替换成了这个

"firstName":"Juraj","lastName":"
                                arnogurský"}}

这会破坏 JSON 格式。

顺便说一句,我正在使用 NodeJS。

如何将我的姓氏编码为适合网络传输的形式?

编辑

我这样做:

const jsonrpc = require('jsonrpc-lite');
const requestHttp = require('request');

还有这个:

let obj = jsonrpc.request(id, method, params);

requestHttp({
    uri: 'http://localhost:3001/api?data=' + JSON.stringify(obj),
    method: 'GET',
}, (error, response, body) => { ...

作为 id 我发送'1' 作为方法我发送addCustomer 作为参数我发送这个:

{
     customerId: senderID,
     facebookId: senderID,
     firstName: context.user.firstName,
     lastName: context.user.lastName,
}

context.user.lastName 是 Čarnogurský

【问题讨论】:

  • 我无法复制。请发布更多代码并为我们提供更多上下文。名字的传播方向是什么?它是如何发送的?它是如何编码的?
  • @theonlygusti 我已经编辑了问题。
  • encodeURIComponent('Č'); //"%C4%8C"

标签: javascript node.js json-rpc


【解决方案1】:

你已经意识到了

uri: 'http://localhost:3001/api?data=' + JSON.stringify(obj)

必须替换为

uri: 'http://localhost:3001/api?',
qs: {
  data: JSON.stringify(obj),
}

这是因为所有网址都可以only use ASCII:

URL 仅使用 US-ASCII 编码字符集。

您的姓名包含 ASCII 集之外的字符。

【讨论】:

    【解决方案2】:

    我已经这样做了:

    requestHttp({
            uri: 'http://localhost:3001/api?',
            qs: {
                data: JSON.stringify(obj),
            },
            method: 'GET',
    }, (error, response, body) => { ...
    

    而不是这个:

    requestHttp({
         uri: 'http://localhost:3001/api?data=' + JSON.stringify(obj),
         method: 'GET',
    }, (error, response, body) => { ...
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2016-12-01
      • 1970-01-01
      • 1970-01-01
      • 2015-04-03
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多