从理货中导出理货数据时,支持多语言文本,但从其他来源(如cmd或 Postman 请求)执行xml文件时,返回其他语言文本,如????符号
我的密码是
<?xml version="1.0" encoding="UTF-8"?>
<ENVELOPE>
<HEADER>
<TALLYREQUEST>ExportData</TALLYREQUEST>
</HEADER>
<BODY>
<EXPORTDATA>
<REQUESTDESC>
<REPORTNAME>TNetSA LedgerSalesorders</REPORTNAME>
<STATICVARIABLES>
<SVCURRENTCOMPANY>${companyName}</SVCURRENTCOMPANY>
<SVFROMDATE>${fromDate}</SVFROMDATE>
<SVTODATE>${toDate}</SVTODATE>
<SVEXPORTFORMAT>$$SysName:XML</SVEXPORTFORMAT>
</STATICVARIABLES>
</REQUESTDESC>
</EXPORTDATA>
</BODY>
</ENVELOPE>
发布请求****UTF-8
表头=〉内容类型:application/xml;字符集=utf-8
https://i.stack.imgur.com/T9WDW.png
UTF-16编码格式
表头=〉内容类型:application/xml;字符集=utf-16
https://i.stack.imgur.com/S4J7H.png
使用 curl 命令
curlcommand = cd C:\Users\..\Data\ && curl -H "Content-Type: text/plain; charset=UTF-8" localhost:9001 --data @Basic\I_SPND.xml
https://i.stack.imgur.com/PJpAK.png
节点js:
const asynchronousProcess = () => {
var inputFilename = Path + 'I_SPND.xml';//path of the stored above xml code
fs.writeFile(inputFilename, values, 'utf8', function (err) {
if (err) {
return console.log(err);
}
});
return new Promise((resolve, reject) => {
let cmd = curlcommand; // above mentioned curl command
exec(cmd, (error, stdout, stderr) => {
if (error) {
reject(error);
}
resolve(stdout ? stdout : stderr);
});
});
}
例如:如果PartyLedgerName为其他语言文本,则结果将为????
当在tally开发工具上运行时,它支持多语言文本,但在post请求或使用curl命令时,意味着它不支持
2条答案
按热度按时间voase2hg1#
需要安装“node-fetch”:“^3.2.10日期”
NodeJ代码段示例
输出:
hgqdbh6s2#
这与语言无关,而是与发送响应计数中使用的编码有关
如果您以utf-8编码发送请求,您将只得到以utf-8编码的响应
为了从正确地使用utf-16编码获取数据
如果您使用任何编程语言来发送请求,那么您可以将请求xml编码为utf-16,这样您将得到正确的响应。
采用utf-8编码的 Postman 响应
从 Postman 发送UTF-16编码的请求
将以xml格式发送的xml保存在文本文件中,保存时使用编码utf-16
**配置 Postman **
在正文选项卡下的postman中选择二进制选项卡,然后选择您在前面步骤中保存的文件
在标题标签中
添加新标题
关键字-内容类型值-应用程序/xml;字符集=utf-16