Unicode 在Erlang中编码表情符号

Unicode 在Erlang中编码表情符号,unicode,erlang,emoji,Unicode,Erlang,Emoji,假设我有一个二进制文件 Message = <<"string containing emoji">>. Message=。 如何正确地用Unicode编码?我试着做: Encoded = <<Message/utf16>>. Encoded=。 我在编译文件时收到以下警告: 警告:二进制构造将失败,出现“badarg”异常 (utf8/utf16/utf32段中的Unicode代码点无效) 我也用/utf8试过了。相同的警告。您可能需要添

假设我有一个二进制文件

Message = <<"string containing emoji">>.
Message=。
如何正确地用Unicode编码?我试着做:

Encoded = <<Message/utf16>>.
Encoded=。
我在编译文件时收到以下警告:

警告:二进制构造将失败,出现“badarg”异常 (utf8/utf16/utf32段中的Unicode代码点无效)


我也用/utf8试过了。相同的警告。

您可能需要添加
-*-编码:utf8-*-
作为模块的第一行,并使用/utf8


我猜您使用的是Erlang/OTP<17,这意味着除非另有规定,否则文件被视为拉丁语-1。

假设您开始使用的二进制文件是根据UTF-8编码的,并且您需要将其编码为小尾端UTF-16,这应该可以工作:

unicode:characters_to_binary(<<"string containing emoji">>, utf8, {utf16, little})
请看这里:
2> <<16#1f64c/utf8>>.
<<240,159,153,140>>
3> <<16#1f64c/utf16>>.
<<"\330=\336L">>
4> <<16#1f64c/utf32>>.
<<0,1,246,76>>