【发布时间】:2016-09-27 15:01:11
【问题描述】:
假设我们从外部来源得到一个charlist,它基本上代表了一些传统的 1 字节编码的字符串,例如 ISO-8859-2。有一个CodepageX 包,它简化了不同编码之间的转换,但它的to_string 函数需要一个[binary] 作为输入。
所有标准库函数在转换为utf8 时都假定Latin1 aka ISO-8859-1 输入编码(如to_string、IO.chardata_to_string、"#{}" 等)
我想出的是:
input
|> to_string
|> Codepagex.from_string!(:iso_8859_1)
|> Codepagex.to_string!(:iso_8859_2) # target encoding
有点丑。
是否有任何健壮且方便的内置/惯用的长生不老药方法以已知编码从 charlist 中获取 string?
【问题讨论】:
-
这样更好吗:
input |> :erlang.list_to_binary |> Codepagex.to_string!(:iso_8859_2)?似乎工作正常:[224] |> :erlang.list_to_binary |> Codepagex.to_string!(:iso_8859_2) #=> "ŕ". -
@Dogbert 是的,这肯定更清楚,因为它不涉及可疑和多余的
to_string |> Codepagex.from_string!(:iso_8859_1)转换,是的,它工作正常。请发布答案。
标签: string encoding character-encoding elixir