Elixir:String Force编码UTF-8

时间:2015-10-03 21:59:37

标签: ruby encoding elixir

我在ruby中有一个使用谷歌API进行翻译的宝石,我正在翻译"它是Elixir。

例如,我从API得到这样的一些: api-data

今天我在Ruby中这样做:

  encoded = rawdata.force_encoding("UTF-8")

我想知道是否有办法来强制执行" force_encode" (就像Ruby一样),但是使用Elixir?

更新解决方案

我基于你的答案达成了一个解决方案,非常感谢!

当Elixir将其作为二进制文件处理时,这就是诀窍:我得到了响应主体:body |> IO.iodata_to_binary ...

defmodule Request do
  alias Extract
  use HTTPotion.Base

  def process_url(url) do
    "https://translate.google.com/translate_a/" <> url
  end

  def process_response_body(body) do
    body |> IO.iodata_to_binary |> Extract.extract
  end
end

Here is entire code

1 个答案:

答案 0 :(得分:2)

当数据被标记为二进制但实际上是UTF-8时,您在Ruby中使用强制编码。在Elixir中,它们都在同一时间,因为所有字符串都是二进制文件,我们无论如何都不会标记它们。换句话说,您不应该强制编码

但是,如果数据不是UTF-8,那么您首先需要找到将其转换为UTF-8的方法。