Erlang 如何从R16B升级到17?如果里面有汉字,请列出\u到\u的二进制分隔符
我们正在使用R16B03-1并尝试升级到R17Erlang 如何从R16B升级到17?如果里面有汉字,请列出\u到\u的二进制分隔符,erlang,Erlang,我们正在使用R16B03-1并尝试升级到R17 iolist\u to\u binary和list\u to\u binary如果里面有汉字,则会中断 我在谷歌上搜索并找到了以下链接来解释这个问题 Erlang文件的默认编码已从ISO-8859-1更改为UTF-8。XML文件的编码也已更改为UTF-8 只有当字符串包含
iolist\u to\u binary
和list\u to\u binary
如果里面有汉字,则会中断
我在谷歌上搜索并找到了以下链接来解释这个问题
Erlang文件的默认编码已从ISO-8859-1更改为UTF-8。XML文件的编码也已更改为UTF-8
只有当字符串包含<256个代码点时,才能使用erlang:iolist_to_binary/1将其直接转换为二进制,或直接发送到端口。如果字符串包含大于255的Unicode字符,则必须确定编码,并且应使用Unicode:characters_to_binary/{1,2,3}将字符串转换为首选编码中的二进制。字符串通常不是字节列表,就像Erlang/OTP R13之前一样。它们是字符列表。字符通常不是字节,而是Unicode代码点
我的问题是我们必须将所有列表\u修改为\u二进制
到unicode:characters\u到\u二进制
从以下链接中感谢
除二进制文件中表示码点或UTF-8的整数以外的其他Unicode编码称为“外部编码”。ISO-latin-1编码是二进制文件,列表称为latin1编码
建议仅在需要时使用外部编码与外部实体进行通信。在Erlang/OTP环境中工作时,建议在表示Unicode字符时将二进制文件保留为UTF-8格式
不需要在所有位置将列表\u到\u二进制修改为unicode:字符\u到\u二进制。只有那些需要与外部世界接口的地方才需要它,并且您不确定字符串是否用utf8表示(或者您确定编码不是utf8)。转换后,可以使用标准BIF
示例:如果列表中有字符[52974]。
列出二进制([52974])。
给出错误的参数异常错误。
但一旦你做了
A=unicode:字符到二进制([52974],utf8)。
在上述转换之后,您可以使用内置函数,这些函数在您的业务逻辑中更快
B = binary_to_list(A).
"컮"
list_to_binary(B).
<<"컮">>
B=二进制列表(A)。
"컮"
列出\u到\u二进制(B)。