[erlang-questions] Decoding term_to_binary in javascript

Bob Gustafson <>
Wed Nov 16 16:29:29 CET 2011


You might check to see how Ruby 1.9.2 handles encoding.

There is an attribute - encoding - which is attached to files and
strings of the form (utf-8, usascii, iso-8859-15, etc.)

A program also has a default encoding - this is taken from the current
locale setting. This default can be overwritten by adding a (Ruby)
comment at the top of the program file of the form '# coding: UTF-8'

By checking the encoding of incoming files or strings, it is possible to
transcode from one encoding scheme to another (not possible in all
cases).

Check "The Well-Grounded Rubyist" by David A. Black, pp 229-231

Encodings were not handled very well in Ruby 1.8.7, so perhaps Erlang
also needs some beefing up in this area.



On Tue, 2011-11-15 at 14:54 -0800, Andrew Berman wrote:
> What happens if you use the dataFilter function on jQuery.ajax?  The
> docs say:
> 
> A function to be used to handle the raw response data of
> XMLHttpRequest.This is a pre-filtering function to sanitize the
> response. You should return the sanitized data. The function accepts
> two arguments: The raw data returned from the server and the
> 'dataType' parameter.
> 
> 
> Just thinking you could decode the response in that function.
> 
> 
> Never tried it though....
> 
> 
> --Andrew
> 
> On Tue, Nov 15, 2011 at 12:42 PM, Joe Armstrong <>
> wrote:
>         To anser my own question it's not so easy.
>         
>         
>         A bert encoded term starts <<131, ...>>
>         
>         
>         Now 131 is not a single byte UTF8 character -  when I make
>         an ajax call from jquery in the browser the ajax stuff tryoes
>         to convert the blob containing a <<128,...>> to a utf8 string
>         and the decoding fails.
>         
>         
>         There are some html5 extensions -- something like
>         
>         
>              var r = new XMLHttpRequest();
>              r.open("GET", "get_bert", true);          
>              r.responseType = "arraybuffer"   
>          
>               r.onload = function(e) {   // XHR2
>                  var arr = new Uint8Array(this.response);
>         
>         
>         seems to work - but the exiting libraries cannot decode
>         a Unit8Array :-(
>         
>         
>         Why the heck sockets and ajax calls can't just sent back
>         sequences of bytes and not mess with them is a mystery to me
>         
>         
>         /Joe
>         
>         
>         On Tue, Nov 15, 2011 at 2:56 PM, Joe Armstrong
>         <> wrote:
>                 This looks good.
>                 
>                 
>                 Another question.
>                 
>                 
>                 Has anybody an example client-server example of bert?
>                 
>                 
>                 I'm thinking:
>                 
>                 
>                            server in erlang  = bert +
>                 mochiweb/misultin/cowboy/yaws ...
>                            client in browser = jquery + bert
>                 
>                 
>                 Id like to make an ajax RPC from the client that
>                 returns a bert blob
>                 unpacks the blob and displays the result.
>                 
>                 
>                 
>                 
>                 /Joe
>                 
>                 On Tue, Nov 15, 2011 at 1:35 PM, Ulf Wiger
>                 <> wrote:
>                 
>                 
>                         
>                         If you can settle for BERT, I think there are
>                         some JavaScript implementations out there:
>                         
>                         https://github.com/rtomayko/node-bertrpc/blob/master/src/bert.js
>                         
>                         BR,
>                         Ulf W
>                         
>                         On 15 Nov 2011, at 12:57, Joe Armstrong wrote:
>                         
>                         
>                         
>                         > I'd like to send a term_to_binary encoded
>                         term to a web client and decode it in
>                         javascript.
>                         >
>                         > If I could do this it would eliminate the
>                         impedance mismatch between server-side
>                         databases
>                         > and client code in a browser. I want to
>                         totally eliminate conversions to and from
>                         JSON. Just send
>                         > raw blobs containing term_to_binary encoded
>                         data and pluck what I want in the client.
>                         >
>                         > I would not necessarily want to decode the
>                         entire blob, I might just want to extract a
>                         specific item
>                         > So for example if In Erlang I created a blob
>                         by saying
>                         >
>                         >       Blob =
>                         term_to_binary({thing,"foo","bar",["baz"]})
>                         >
>                         > I'd like to send this to a browser and in
>                         Javascript say:
>                         >
>                         >      var z =
>                         mylib_hd(my_lib_element(4,Blob))
>                         >
>                         > Whereby z would be the javascript string
>                         "baz".
>                         >
>                         > Has anybody implemented anything like this?
>                         >
>                         > /Joe
>                         >
>                         >
>                         >
>                         
>                         
>                         >
>                         _______________________________________________
>                         > erlang-questions mailing list
>                         > 
>                         >
>                         http://erlang.org/mailman/listinfo/erlang-questions
>                         
>                         
>                 
>                 
>         
>         
>         
>         _______________________________________________
>         erlang-questions mailing list
>         
>         http://erlang.org/mailman/listinfo/erlang-questions
>         
> 
> 
> _______________________________________________
> erlang-questions mailing list
> 
> http://erlang.org/mailman/listinfo/erlang-questions





More information about the erlang-questions mailing list