编码无法发送到API Node JS的奇怪字符

时间:2017-01-26 23:19:41

标签: javascript node.js json-rpc

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

取代了
"firstName":"Juraj","lastName":"
                                arnogurský"}}

它破坏了JSON格式。

我正在使用NodeJS btw。

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

修改

我这样做:

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ý

2 个答案:

答案 0 :(得分: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集之外的字符。

答案 1 :(得分:0)

通过这样做我已经成功了:

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) => { ...