2013-08-20 55 views
0

节俭字符串据说是encoding agnostic/binary strings。这到底是什么意思? Thrift在编程语言处理之间使用自己的编码吗?节俭字符串类型编码

什么是二进制字符串?

我理解ASCII字符数组(=基于C的语言中的字符串)和Unicode字节序列,但我不太清楚如何在Thrift中解释“编码不可知或二进制字符串”。

回答

1

简短回答:字符串通常写为UTF-8字符串。

通常,因为任何运输可以改变这种行为。因此可以编写一个以不同方式序列化字符串的Thrift传输。

我不确定Diwaker在创造“二进制字符串”这个术语时想到的是什么,但我想这是指大部分时间以字节[]或特定的语言相当于它,但在一些罕见的情况下,作为一个字符序列来代替。

+0

你说“这将有可能编写一个Thrift传输,以不同的方式串行化字符串' 使用C++我想使用宽字符串原因是:我正在从专有数据库API读取数据, 给我字符串作为宽字符字符串(例如unsigned short或std :: wstrings),例如(DB2,MS SQL服务器)。有大量的开销 不得不从std :: wstrings转换为std :: strings,并返回每行可能数百万 任何想法如何我可以避免这种开销? – user841550

+0

这是一个略有不同的东西。我在谈论序列化格式。问题是[写入和读取方法](https://git-wip-us.apache。组织/回购/ ASF p = thrift.git; A =斑点; F = LIB/CPP/SRC /节俭/协议/ TProtocolDecorator.h; HB = HEAD )和生成的代码都期望'std :: string'。我想到的一种方法和*可能*工作(未测试!)是[cast](https://git-wip-us.apache.org/repos/asf?p=thrift.git;a=blob ; f = lib/cpp/src/thrift/protocol/TProtocol.h; hb = HEAD)将数据转换为二进制BLOB并转移这些数据。不优雅,但可以工作。 – JensG