[ https://issues.apache.org/jira/browse/THRIFT-3364?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]
Nobuaki Sukegawa updated THRIFT-3364: ------------------------------------- Description: Ruby JSON protocol uses pack('m') method to encode Base64 string. It seems that it inserts a "\n" character every 60 characters. You can refer to these pages for this behavior. http://stackoverflow.com/questions/2620975/strange-n-in-base64-encoded-string-in-ruby http://ruby-doc.org/stdlib-2.2.3/libdoc/base64/rdoc/Base64.html {quote} Line feeds are added to every 60 encoded characters. {quote} This has been making it impossible to send long binary field data to other languages. I fixed this by using alternative encode method that is added in Ruby 1.9 (which should be OK). After the fix, I had to add Ruby namespace to DebugProtoTest.thrift to avoid name collision of "Base64" symbols that is used for new encode method and also as DebugProtoTest message name. I also removed extraneous double quote in encoded binary fields that resulted in invalid JSON. was: Ruby JSON protocol uses pack('m') method to encode Base64 string. It seems that it inserts a "\n" character every 60 characters. You can refer to these pages for this behavior. http://stackoverflow.com/questions/2620975/strange-n-in-base64-encoded-string-in-ruby http://ruby-doc.org/stdlib-2.2.3/libdoc/base64/rdoc/Base64.html {quote} Line feeds are added to every 60 encoded characters. {quote} This has been making it impossible to send long binary field data to other languages. I fixed this by using alternative encode method that is added in Ruby 1.9 (which should be OK). After the fix, I had to add Ruby namespace to DebugProtoTest.thrift to avoid name collision of "Base64" symbols that is used for new encode method and also as DebugProtoTest message name. > Fix ruby binary field encoding in TJSONProtocol > ------------------------------------------------- > > Key: THRIFT-3364 > URL: https://issues.apache.org/jira/browse/THRIFT-3364 > Project: Thrift > Issue Type: Sub-task > Components: Ruby - Library > Affects Versions: 0.9.3 > Reporter: Nobuaki Sukegawa > > Ruby JSON protocol uses pack('m') method to encode Base64 string. > It seems that it inserts a "\n" character every 60 characters. > You can refer to these pages for this behavior. > http://stackoverflow.com/questions/2620975/strange-n-in-base64-encoded-string-in-ruby > http://ruby-doc.org/stdlib-2.2.3/libdoc/base64/rdoc/Base64.html > {quote} > Line feeds are added to every 60 encoded characters. > {quote} > This has been making it impossible to send long binary field data to other > languages. > I fixed this by using alternative encode method that is added in Ruby 1.9 > (which should be OK). > After the fix, I had to add Ruby namespace to DebugProtoTest.thrift to avoid > name collision of "Base64" symbols that is used for new encode method and > also as DebugProtoTest message name. > I also removed extraneous double quote in encoded binary fields that resulted > in invalid JSON. -- This message was sent by Atlassian JIRA (v6.3.4#6332)