このページ:
http://erlang.org/doc/highlights.html
...リリース 5.7/OTP R13A のハイライトをリストします。この一節に注意してください。
1.2 ユニコードのサポート
Unicode のサポートは、EEP10 で説明されているように実装されています。端末とファイルの両方からの Unicode データのフォーマットと読み取りは、io および io_lib モジュールによってサポートされています。ファイルは、さまざまな Unicode 形式との間の自動変換を行うモードで開くことができます。モジュール 'unicode' には、外部と内部の Unicode フォーマット間の変換のための関数が含まれており、re モジュールは unicode データをサポートしています。ISO-latin-1 の範囲を超える文字列および文字データを指定するための言語構文もあります。
ベスト プラクティスとは何かについて明言するのは好きではありませんが、一般化を開始するための最小限の完全な例があると役立つことがよくあります。これは、utf を erlang アプリケーションに取り込み、それを別のコンテキストに再度送信する例です。utf8 文字を含むテーブルに行フィールドを持つ MySql データベースがあると仮定すると、それを取り出して json として Web ブラウザーにパイプする 1 つの方法を次に示します。
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
次に、Web ページ (または MozRepl などのより便利なもの) で次を実行します。
var req = new XMLHttpRequest;
req.open('GET', "http://localhost:8000", false);
req.send(null);
eval("(" + req.responseText + ")");