によると、
Cのモジュールと通信してデータをやりとりする仕様だけれど, C側のモジュールがシングルスレッドで実行されて,そのモジュールとの通信を奪い合うのが原因?なのかなぁ.
だそうだ。とはいえ、今のところそんなにスピードは求めないからiconvでも十分かな。
Cのモジュールと通信してデータをやりとりする仕様だけれど, C側のモジュールがシングルスレッドで実行されて,そのモジュールとの通信を奪い合うのが原因?なのかなぁ.
-module(jcode).
-export([check/1]).
is_euc({codepair, C1, C2}) ->
( (C1 >= 16#a1) and (C1 =< 16#fe))
andalso( (C2 >= 16#a1) and (C2 =< 16#fe)).
is_sjis({codepair, C1, C2}) ->
(((C1 >= 16#81) and (C1 =< 16#9F))
orelse ((C1 >= 16#E0) and (C1 =< 16#FE)))
andalso( ((C2 >= 16#40) and (C2 =< 16#7e))
orelse ((C2 >= 16#80) and (C2 =< 16#fc))).
check_pair([A, B | T]) ->
CodeE = is_euc({codepair, A, B}),
CodeS = is_sjis({codepair, A, B}),
if
CodeE == true -> {ok, euc, T} ;
CodeS == true -> {ok, sjis, T} ;
true -> check_pair([B] ++ T)
end;
check_pair([A|T]) -> {ok, ascii, [] };
check_pair([]) -> { ok, ascii, [] }.
check(Source) ->
check_pair(Source).
日 | 月 | 火 | 水 | 木 | 金 | 土 |
---|---|---|---|---|---|---|
1 | 2 | 3 | ||||
4 | 5 | 6 | 7 | 8 | 9 | 10 |
11 | 12 | 13 | 14 | 15 | 16 | 17 |
18 | 19 | 20 | 21 | 22 | 23 | 24 |
25 | 26 | 27 | 28 | 29 | 30 | 31 |