编码无法发送到 API Node JS 的奇怪字符
Posted
技术标签:
【中文标题】编码无法发送到 API Node JS 的奇怪字符【英文标题】:Encode strange characters which are unable to be sent to 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"
【参考方案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) => ...
【讨论】:
以上是关于编码无法发送到 API Node JS 的奇怪字符的主要内容,如果未能解决你的问题,请参考以下文章
Node.js / Express - 如何设置响应字符编码?
如何显示从 Node.js API 发送到 Next.js 的验证错误
使用wcf.js和node.js与Alexa联系WCF服务无法正常工作?