[
https://issues.apache.org/jira/browse/THRIFT-1726?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=13474383#comment-13474383
]
XB commented on THRIFT-1726:
----------------------------
This patch should fix this issue:
{noformat}
diff --git a/lib/rb/lib/thrift/struct_union.rb
b/lib/rb/lib/thrift/struct_union.rb
index 4e0afcf..7df859c 100644
--- a/lib/rb/lib/thrift/struct_union.rb
+++ b/lib/rb/lib/thrift/struct_union.rb
@@ -100,6 +100,12 @@ module Thrift
end
end
iprot.read_set_end
+ when Types::STRING
+ if field[:binary]
+ value = Bytes.force_binary_encoding(iprot.read_type(field[:type]))
+ else
+ value = iprot.read_type(field[:type])
+ end
else
value = iprot.read_type(field[:type])
end
{noformat}
> Ruby-1.9: "binary" fields are represented by string whose encoding is "UTF-8"
> -----------------------------------------------------------------------------
>
> Key: THRIFT-1726
> URL: https://issues.apache.org/jira/browse/THRIFT-1726
> Project: Thrift
> Issue Type: Bug
> Components: Ruby - Library
> Affects Versions: 0.9
> Environment: JRuby 1.6.8 using "--1.9" command line parameter.
> Reporter: XB
>
> When reading a thrift object using the Thrift::BinaryProtocol and this thrift
> object has a field of type "binary", then accessing this field yields a
> string whose encoding is "UTF-8".
> The encoding should be "ASCII-8BIT" instead. It may be right to assume that
> "string" fields have a character encoding (such as "UTF-8"), but "binary"
> fields do not have a character encoding at all. For these cases, there is the
> pseudo-encoding "ASCII-8BIT" where we deal just with an opaque sequence of
> bytes.
--
This message is automatically generated by JIRA.
If you think it was sent incorrectly, please contact your JIRA administrators
For more information on JIRA, see: http://www.atlassian.com/software/jira