2013-08-20 57 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