最近有朋友使用Erlang遇到一个编码问题。Erlang里面直接把汉字弄成串是这样的:
24> A = "汉字".
[27721,23383]
但是有时候汉字会出现这种utf8格式的:
[228,184,173,230,150,135]
有时候需要把utf8的ascii码转成第一种,这就需要下面的方式:
%% ASCII码转为Erlang中正常的中文编码
asc_to_cn(Data) when is_list(Data) ->
TData = list_to_bitstring(Data),
[Res] = io_lib:format("~ts",[TData]),
Res.
或者是下面这种方式:
{ok, Res} = asn1rt:utf8_binary_to_list(list_to_binary(Data))