表情符号从列表到二进制的erlang编码和解码

表情符号从列表到二进制的erlang编码和解码,erlang,mochiweb,jsonparser,jiffy,emq,Erlang,Mochiweb,Jsonparser,Jiffy,Emq,我希望将iOS的VOIP通知的此字符串解析为二进制字符串: "{\"data\":{\"text\":\"❤️\"}}" 我希望打印在Erlang shell上的数据是: <<"{\"data\":{\"text\":\"❤️\"}}">> 我尝试了来自的解决方案,但它只给了我一个表情符号字符串,它是: {<<"data">>,{[{<<"text">>,<<100,39,15,254>>}]}}

我希望将iOS的VOIP通知的此字符串解析为二进制字符串:

"{\"data\":{\"text\":\"❤️\"}}"
我希望打印在Erlang shell上的数据是:

<<"{\"data\":{\"text\":\"❤️\"}}">>
我尝试了来自的解决方案,但它只给了我一个表情符号字符串,它是:

{<<"data">>,{[{<<"text">>,<<100,39,15,254>>}]}}
{,{[{,}]}

如何在Erlang shell中以Unicode正确显示它?

在您提供的第一个示例中,它已正确编码,但未正确显示。使用双引号定义字符串时,字符串实际上存储为字符代码列表。对于心脏表情符号
[1008465039]
是字符代码。ErlangShell并不是打印表情符号本身,而是打印表示表情符号的字节值

在第二种情况下,即二进制字符串中,不需要对二进制进行任何特殊编码,但需要告诉Erlang将其视为UTF8字符串。您可以通过在关闭前的末尾指定
/utf8
来完成此操作:

<<"{\"data\":{\"text\":\"❤️\"}}"/utf8>>.
将其设置为unicode将导致在shell中打印表情符号,如下所示:


它看起来编码正确。你是说它编码不正确还是显示不正确?
<<"{\"data\":{\"text\":\"❤️\"}}"/utf8>>.
erl +pc unicode