需要解析在UTF8中无效的二进制字符串

时间:2016-10-20 15:53:20

标签: elixir

我有这个返回的html数据:

case HTTPoison.get("some url") do
  {:ok, %HTTPoison.Response{status_code: 200, body: body}} ->
    IO.binwrite(body)

这实际上是无效的utf-8数据,因为它将其打印为二进制字符串:

  # 1
  IO.puts(body) #prints binary data <<111, 222, 333....>>

  # 2
  {:ok, file} = File.open("hello.txt", [:write])
  IO.binwrite(file, body)
  {:ok, data} = File.read("hello.txt")
  bb = :erlang.binary_to_list(data)
  IO.binwrite(bb) #prints binary data [111, 222, 333....]

当我打开文件时,我可以阅读它并且它是一个文本文件。但它以二进制打印,这表示它无效:

  IO.puts(String.valid?(body)) #false

我的最终目标是解析&#34; body&#34; - 查找并提取子串。如果它是二进制的,我怎么能这样做?

0 个答案:

没有答案