Javascript 从C+转换缓冲区+;转换为node.js中的utf-8字符串 我有C++编写的服务器端代码,返回一个字符串。客户端代码托管在express中。客户端代码具有以下端点调用: router.post( '/returnMyStringFromCPlusPlus', ( request, response ) => { var returnedValue; try { var returnBuf = new Buffer.alloc( 512, 0 ); // this will fill buffer with 0 returnedValue= serverSideCode.returnMyStringFromCPlusPlus(); ... }
当我得到这个returnedValue时,我看到它是一个缓冲区。我通过测试进行了双重检查:Javascript 从C+转换缓冲区+;转换为node.js中的utf-8字符串 我有C++编写的服务器端代码,返回一个字符串。客户端代码托管在express中。客户端代码具有以下端点调用: router.post( '/returnMyStringFromCPlusPlus', ( request, response ) => { var returnedValue; try { var returnBuf = new Buffer.alloc( 512, 0 ); // this will fill buffer with 0 returnedValue= serverSideCode.returnMyStringFromCPlusPlus(); ... },javascript,c++,node.js,buffer,Javascript,C++,Node.js,Buffer,当我得到这个returnedValue时,我看到它是一个缓冲区。我通过测试进行了双重检查: console.log(returnedValue instanceof buffer); 这显然是真的。问题是我无法将缓冲区转换为文本!我试过: 字符串解码器: const StringDecoder=require(“字符串解码器”).StringDecoder const decoder = new StringDecoder( "utf-8" ) co
console.log(returnedValue instanceof buffer);
这显然是真的。问题是我无法将缓冲区转换为文本!我试过:
字符串解码器:
const StringDecoder=require(“字符串解码器”).StringDecoder
const decoder = new StringDecoder( "utf-8" )
console.log( decoder.write( returnedValue) );
toString():
console.log(returnedValue.toString('ascii'));
String.fromCharCode
var printMe = String.fromCharCode.apply(null, new Uint16Array(returnCode));
console.log(printMe)
老实说,我从来没有在StackOverFlow上问过很多问题,通常最后都会回答我自己的问题,但我很好奇你们中是否有人见过这一点。我不知道如何解决这个问题,已经做了一天多了
我预期的问题
var printMe = String.fromCharCode.apply(null, new Uint16Array(returnCode));
console.log(printMe)
使用节点版本11(也尝试了12和13)
使用x64版本的VisualStudio
这不重要,但是从C++返回的代码是:
#include <string>
string testThis()
{
string testIfThisWorks = "TestIfThisWorks";
return testIfThisWorks;
}
#包括
字符串testThis()
{
字符串testIfThisWorks=“testIfThisWorks”;
归还作品;
}
这是在Windows 10上的,所以我知道这差不多是7个月后的事了,但我最终还是找到了解决这个问题的办法。我不认为这是理想的,如果我找到一个更好的建议,我仍然愿意接受,但我找到了一种黑客的方式来做到这一点。我最后做的是:
然后在C端操作这个值,并将其作为字符串返回 所以我知道这几乎是7个月后的事了,但我最终还是找到了解决这个问题的办法。我不认为这是理想的,如果我找到一个更好的建议,我仍然愿意接受,但我找到了一种黑客的方式来做到这一点。我最后做的是:
然后在C端操作这个值,并将其作为字符串返回。您已经提到字符串应该是UTF-8格式的。您是否尝试过
console.log(returnedValue.toString('utf8'))代码>?您是否尝试打印该缓冲区?我的意思是值,不是一个类型。…@igor.code这两个都不起作用。您已经提到字符串应该在UTF-8中。您是否尝试过console.log(returnedValue.toString('utf8'))代码>?您是否尝试打印该缓冲区?我指的是数值,不是一种类型。…@igor.code这两种代码都不起作用。