Your Digital Media Has Never Looked So Good

 
User avatar
24i
Topic Author
Posts: 37
Joined: Wed Feb 15, 2017 7:22 am

Decoding Base64 string fails

Tue Jul 25, 2017 8:52 am

Hi,

I'm trying to decode a Base64 string using the FromBase64String(s as String) from the roByteArray object:
https://sdkdocs.roku.com/display/sdkdoc/ifByteArray

Our customer is sure that the string that we receive is valid base-64 encoding, as it works on other platforms (tvOS, Android, etc)
However when I try to get a readable string out of I get: ???????0??????1?0   ??+?????
blob = CreateObject("roByteArray")
blob.FromBase64String(apiData.data.Mid(startStr, 20))

print blob.ToAsciiString()


The string I tried to decode:
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


any thoughts?
 
destruk
Posts: 2720
Joined: Sat Dec 18, 2010 4:58 pm

Re: Decoding Base64 string fails

Tue Jul 25, 2017 10:19 am

The string you are decoding has extended ascii characters in the output - anything >128 will show as a "?" if you are trying to print it or stick it into a label.  But the decode option ought to work.  Does Roku play Flash Streams?
 
User avatar
RokuPam
Posts: 12
Joined: Mon Jul 10, 2017 2:16 pm

Re: Decoding Base64 string fails

Tue Jul 25, 2017 11:24 am

Hello,

We do not support flash streams.

Have you tried using another font (i.e. system font) that supports your characters? I'd also recommend reviewing our Encoding Guidelines from the SDK docs here.
 
User avatar
24i
Topic Author
Posts: 37
Joined: Wed Feb 15, 2017 7:22 am

Re: Decoding Base64 string fails

Tue Jul 25, 2017 11:41 am

I was already afraid this had something to do with the extended ASCII characters not being supported. 
This string is from the manifests that we receive for the streams and contains a token that we have to use.
I will contact our client about this, thank you!
 
User avatar
RokuKC
Posts: 315
Joined: Wed Sep 10, 2014 10:44 am
Location: Roku HQ

Re: Decoding Base64 string fails

Wed Jul 26, 2017 11:27 am

24i wrote:
I was already afraid this had something to do with the extended ASCII characters not being supported. 
This string is from the manifests that we receive for the streams and contains a token that we have to use.


You should be able to work with the binary data in the roByteArray assuming the base64 decode was successful.
However, to use roByteArray ToAsciiString, the binary data must be either 7-bit ASCII or valid UTF-8 data,
as noted in the documentation.

And as RokuPam noted, if you are using non-Latin or "unusual" characters, the console you are printing to would
need to be set up to support UTF-8, including whatever font support might be needed to show the character glyphs.
 
User avatar
RokuNB
Posts: 465
Joined: Fri Mar 31, 2017 2:22 pm

Re: Decoding Base64 string fails

Wed Jul 26, 2017 4:54 pm

24i wrote:
any thoughts?

Yes - this is base64-encoded binary. Go to say https://www.base64decode.org/ and decode the string, look at the result file and you will see it's not a proper text string, while it contains texts ("com.adobe.flashaccess.rights." something-something). I am not sure what it is - signed token or certificate chain - but text it is not. So you shouldn't expect ToAsciiString() making sense of it.

Who is online

Users browsing this forum: No registered users and 5 guests