访问错误:无效的UTF-8编码$ {FFD8FFE0}

时间:2017-04-12 21:27:43

标签: encoding utf-8 red

目前还没有关于红色的书籍,因为它是如此新颖。因此,我试图跟随一本旧的Rebol书,并从中挽救我所能得到的东西。

我找到了一些命令,例如read,由于文件编码,我无法执行代码。

 save %/c/users/abagget/desktop/bay.jpg read http://rebol.com/view/bay.jpg
 Access Error: invalid UTF-8 encoding: #{FFD8FFE0}

在Rebol中,这^将被读/二进制和写/二进制

 >> write %/c/alex.txt read http://google.com
 *** Access Error: invalid UTF-8 encoding: #{A050726F}

有没有办法将传入内容转换为UTF-8,以便我可以读取? 还是有其他类型的读取处理非UTF-8?

1 个答案:

答案 0 :(得分:4)

  

在Rebol中,这^将被读/二进制和写/二进制

在Red中,save用于将Red数据类型转换为二进制格式的序列化文本。因此,如果您想要image!到JPEG文件,则需要提供read值。 write/binary %/c/users/abagget/desktop/bay.jpg read/binary http://rebol.com/view/bay.jpg 获取文本内容(目前仅限UTF-8),因此您的使用无效。正确的行应该是:

bin-to-string: function [bin [binary!]][
    text: make string! length? bin
    foreach byte bin [append text to char! byte]
    text
]
  

有没有办法将传入内容转换为UTF-8,以便我可以进行阅读?

要从非UTF-8文本资源中获取字符串,您需要将资源作为二进制文件获取,然后编写一个可怜的人转换器,它应该适用于常见的Latin-1编码:< / p>

>> bin-to-string read/binary http://google.com
== {<!doctype html><html itemscope="" itemtype="http://schema.org...

从控制台使用它:

<html>
<head>
<script type="text/javascript">
  var i = 1;
  var x = setInterval(function() {
   var x = document.getElementById("li1");
   console.log(x.style.color);
        if (x.style.color == "blue"){
          x.style.color = "yellow";
        } else if (x.style.color === "yellow"){
      x.style.color = "red";
    } else if (x.style.color === "red"){
      x.style.color = "blue";
    }

    }, 1000);

</script>
</script>
<body>   
 <div class="leftDiv">
      <div id = "stepsId" > 
        <ol>
          <li id="li1" style="color: blue;"><b>Step 1</b></li>
          <li id="li2"><b>Step 2</b></li>
          <li id="li3"><b>Step 3</b></li>
        </ol>
      </div>
    </div>
</body>
</html>

Red将来会为常用的文本编码提供正确的转换器。在此期间,您可以使用此类功能,或者为您最常使用的编码编写适当的解码器(使用转换表)。