我在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
答案 0 :(得分:2)
当数据被标记为二进制但实际上是UTF-8时,您在Ruby中使用强制编码。在Elixir中,它们都在同一时间,因为所有字符串都是二进制文件,我们无论如何都不会标记它们。换句话说,您不应该强制编码。
但是,如果数据不是UTF-8,那么您首先需要找到将其转换为UTF-8的方法。