asn1rt:utf8_binary_to_list/1
把一个 utf8 编码的二进制数据转为一个 unicode 列表
用法:
utf8_binary_to_list(UTF8Binary) -> {ok,UnicodeList} | {error,Reason}
内部实现:
%% utf8_binary_to_list/1 transforms a utf8 encoded binary to a list of
%% unicode elements, where each element is the unicode integer value
%% of a utf8 character.
%% Bin is a utf8 encoded value. The return value is either {ok,Val} or
%% {error,Reason}. Val is a list of integers, where each integer is a
%% unicode character value.
utf8_binary_to_list(Bin) when is_binary(Bin) ->
utf8_binary_to_list(Bin,[]).
utf8_binary_to_list(<<>>,Acc) ->
{ok,lists:reverse(Acc)};
utf8_binary_to_list(Bin,Acc) ->
Len = utf8_binary_len(Bin),
case catch split_binary(Bin,Len) of
{CharBin,RestBin} ->
case utf8_binary_char(CharBin) of
C when is_integer(C) ->
utf8_binary_to_list(RestBin,[C|Acc]);
Err -> Err
end;
Err -> {error,{asn1,{bad_encoded_utf8string,Err}}}
end.
把一个 UTF8 编码的二进制数据转为一个整数形式的列表,列表里的每一个整数值(大于 255 的整数值是一个中文字符)代表一个字符它对应的 unicode 值。如果二进制数据不是一个合法的 UTF8 编码的字符串,那么转换失败。
asn1rt:utf8_binary_to_list(list_to_binary("abc测试")).