首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何将二进制数据从二进制to转换为字符串/文本

如何将二进制数据从二进制to转换为字符串/文本
EN

Stack Overflow用户
提问于 2014-10-27 20:11:01
回答 1查看 1.4K关注 0票数 1

我的BinaryJS webclient接收二进制数据,如何将其转换回服务器发送的文本输入?

创建Websocket的服务器(使用NodeJS)使用BinaryJS,因为它将数据作为流进行传输,我希望使用Websocket流将数据转发给客户端。

web客户端看起来如下:

代码语言:javascript
复制
  <html>
  <head>
    <script src="http://cdn.binaryjs.com/0/binary.js"></script>
    <script src="http://cdnjs.cloudflare.com/ajax/libs/jquery/2.1.1/jquery.js"></script>
    <script src="text-encoding/lib/encoding.js"></script>
    <script src="decode.js"></script>
    <script>
      // Connect to Binary.js server
      var client = new BinaryClient('ws://localhost:9000');
      // Received new stream from server!
      client.on('stream', function(stream, meta){
        // Buffer for parts
        // Got new data
        stream.on('data', function(data){
          $( ".inner" ).append(data+"<br />");
        });
        stream.on('end', function(){
        });
      });
    </script>
  </head>
  <body>
    <div class="inner">Output:</div>
  </body>
  </html>

遗憾的是,我的输出不是输入文本,而是这样的内容:

代码语言:javascript
复制
[object ArrayBuffer]

编辑:找到可能的解决方案:

由于数据是UTF-8编码的,我可以简单地使用在另一个问题中发布的函数对其进行解码:

代码语言:javascript
复制
function ab2str(buf) {
  return String.fromCharCode.apply(null, new Uint8Array(buf));
}
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2014-10-27 23:03:53

这里有两种情况:

我想你指的是这个问题:Uint8Array to string in Javascript

请注意,那里的fromCharCode回答明确表示它没有正确地解码UTF8。您最好的选择是使用一个ArrayBuffer来解码FileReader。您还在data处理程序中错误地处理此内容,而不应该首先聚合它。

代码语言:javascript
复制
client.on('stream', function(stream, meta){
    var parts = [];
    stream.on('data', function(data){
        parts.push(data);
    });
    stream.on('end', function(){
        var blob = new Blob(parts);
        var reader = new FileReader();
        reader.onload = function(){
            $( ".inner" ).append(reader.result + "<br />");
        };
        reader.readAsText(blob);
    });
});

尽管如此,我的实际建议是,在这种情况下不使用Binary.js。它的全部目的是传输二进制数据。如果您计划主要传输文本,您应该考虑使用更多的面向文本的库,如Socket.IO。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/26595985

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档