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

Posted

技术标签:

【中文标题】访问错误:无效的 UTF-8 编码 $FFD8FFE0【英文标题】:Access Error: invalid UTF-8 encoding $FFD8FFE0访问错误:无效的 UTF-8 编码 $FFD8FFE0 【发布时间】:2017-09-08 20:21:01 【问题描述】:

目前还没有关于红色的书籍,因为它太新了。因此,我正在尝试遵循一本旧的 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?

【问题讨论】:

哪本书? :D 这个错误是由谷歌页面中的无效 UTF-8 引起的,正如你所发现的那样。Rebol 只是忽略(?)它。我在某个地方打破了这个谷歌错误,但我不记得了.. 通过 Nick Antonaccio 学习 REBOL 【参考方案1】:

在 Rebol 中,这个^ 会被读取/二进制和写入/二进制

在 Red 中,save 也用于将 Red 数据类型转换为二进制格式的序列化文本。所以如果你想save 到一个JPEG 文件,你需要提供一个image! 值。 read 获取文本内容(目前仅限于 UTF-8),因此您的使用无效。正确的行应该是:

 write/binary %/c/users/abagget/desktop/bay.jpg read/binary http://rebol.com/view/bay.jpg

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

要从非 UTF-8 文本资源中获取字符串,您需要以二进制形式获取资源,然后编写一个适用于常见 Latin-1 编码的穷人转换器:

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

从控制台使用它:

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

Red 将来会为常用的文本编码提供适当的转换器。同时,您可以使用这样的功能,或者为您最常用的编码编写适当的解码器(使用转换表)。

【讨论】:

以上是关于访问错误:无效的 UTF-8 编码 $FFD8FFE0的主要内容,如果未能解决你的问题,请参考以下文章

thinkphp5 连访问数据库时报错utf-8编码错误

python 2.x 中的“编码是无效关键字”错误是不是不可避免?

eclipse xml 编码问题 “3 字节的 UTF-8 序列的字节 3 无效”

3 字节的 UTF-8 序列的字节 2 无效

编码 4 字节 UTF-8 字符 ????从 Rails 到 JSON 产生无效字符

UTF-8字符集在Windows Hotspot JVM 1.8.0_201中输出无效编码