Эта страница:
http://erlang.org/doc/highlights.html
... перечисляет основные моменты выпуска 5.7 / OTP R13A. Обратите внимание на этот отрывок:
1.2 Поддержка Unicode
Поддержка Unicode реализована как
описано в EEP10. Форматирование и
чтение данных Unicode как из
Терминалы и файлы поддерживаются
модули io и io_lib. Файлы могут
открываться в режимах с автоматическим
перевод в и из разных
форматы Юникода. Модуль «Юникод»
содержит функции для конвертации
между внешним и внутренним юникодом
форматы и повторный модуль имеет поддержку
для данных Unicode. Существует также
синтаксис языка для указания строки
и данные персонажа за пределами
ISO-latin-1 диапазон.
Я не люблю высказывать свое мнение о том, какими будут лучшие практики, но я часто нахожу полезным иметь минимальный, полный пример, с которого можно начать обобщать. Вот один из способов получить utf в приложение erlang и отправить его снова в другой контекст. Предполагая, что у вас есть база данных MySql с полем строки в таблице, содержащей символы utf8, вот один из способов получить ее и передать в веб-браузер как json:
hg clone http://bitbucket.org/justin/webmachine/ webmachine-read-only
cd webmachine-read-only
make
./scripts/new_webmachine.erl mywebdemo /tmp
svn checkout http://erlang-mysql-driver.googlecode.com/svn/trunk/ erlang-mysql-driver-read-only
cd erlang-mysql-driver-read-only/src
cp * /tmp/mywebdemo/src
svn checkout http://mochiweb.googlecode.com/svn/trunk/ mochiweb-read-only
cp mochiweb-read-only/src/mochijson2.erl /tmp/mywebdemo/src
cd /tmp/mywebdemo
Отредактируйте src / mywebdemo_resource.erl так, чтобы он выглядел так:
-module(mywebdemo_resource).
-export([init/1, to_html/2]).
-include_lib("webmachine/include/webmachine.hrl").
init([]) -> {ok, undefined}.
to_html(ReqData, State) ->
mysql:start_link(pool_id, "database.host.com", 3306, "db_user", "db_password", "db_name", fun(A, B, C, D) -> ouch end, utf8), %% add your connection string info
{data, Res} = mysql:fetch(pool_id, "select * from table where IdWhatever = 13"),
[[_, Utf8Str, _]] = mysql:get_result_rows(Res), %% pattern will need to be altered to match your table structure
{mochijson2:encode({struct, [{Utf8Str, 100}]}), ReqData, State}.
Постройте все и запустите диспетчер URL:
make
./start.sh
Затем выполните на веб-странице следующее (или что-то более удобное, например, MozRepl):
var req = new XMLHttpRequest;
req.open('GET', "http://localhost:8000", false);
req.send(null);
eval("(" + req.responseText + ")");