Отправить двоичный файл erlang в браузер - PullRequest
1 голос
/ 22 марта 2012

Я хотел бы отправить термины erlang (на основе erlang) в веб-браузер.Достаточно легко закодировать термин на стороне эрланга, используя что-то вроде:

term_to_binary(Term)

или:

binary_to_list(term_to_binary(Term))

Проблема, конечно, в том, что на конце браузера появляется зашифрованный мусор.

Вопрос: Есть ли какая-нибудь кодировка, которую я могу использовать на стороне браузера, или, более вероятно, какая-то Content-Type, которую я могу принять на стороне браузера, чтобы расшифровать это?

Спасибо.

Ответы [ 4 ]

2 голосов
/ 01 мая 2012

Существует piqi , который обеспечивает расширенные механизмы отображения между .piqi (его язык определения записей), json, xml и protobuf.Это действительно классный инструмент, который мы постоянно используем для сопоставления всех этих форматов.Обычно, когда я создаю что-то (в Erlang), которое должно предоставлять какие-то данные для чего-то другого, я начинаю с файла определения piqi, который определяет структуру.Компилятор piqic генерирует определения записей Erlang и код преобразования, чтобы легко выполнять преобразования.

Настоятельно рекомендуется, но это может быть излишним для вашей работы.

2 голосов
/ 23 марта 2012

Используйте io_lib:format("~p",[Term]).Он создаст строковое представление термина erlang, который можно отобразить на веб-странице.Также рассмотрите этот вопрос и его ответ .

1 голос
/ 30 марта 2012

Если бы это был веб-браузер, я бы выбрал строку Json, это юникод, и браузеры поддерживают ее нативально.

Может быть, рассмотрим Json и сделайте что-нибудь подобное для строк:

1> HelloJerome = "Hello Jérôme".
"Hello Jérôme"
2> HelloJeromeBin = list_to_binary(HelloJerome).
<<"Hello Jérôme">>
3> HelloJeromeJson = << <<"{\"helloJerome\":\"">>/bits, HelloJeromeBin/bits, $\", $} >>.
<<"{\"helloJerome\":\"Hello Jérôme\"}">>

В консоли браузера:

jerome = JSON.parse('{\"hello\":\"Hello Jérôme\"}')

Теперь

jerome.hello == "Hello Jérôme"

Есть хорошие версии ejson или mochijson2 классические, но ktuo или ...

1 голос
/ 22 марта 2012

Кодируйте его с помощью base64 . Получите его через ajax, а затем декодируйте с помощью нативного window.atob или любой из многочисленных доступных библиотек.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...