我有这个返回的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; - 查找并提取子串。如果它是二进制的,我怎么能这样做?