2017-04-12 52 views
1

現在還沒有真正的紅色書籍,因爲它是如此的新穎。所以我想跟着一本舊的Rebol書,並且從中拯救我能做的。

我發現了幾個命令,例如read,由於文件編碼我無法執行代碼。

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

在雷博爾這^將已讀/二進制和寫入/二進制

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

有沒有辦法進入的內容轉換爲UTF-8,所以我可以做讀? 還是有其他類型的處理非UTF-8的讀取?

+0

哪本書? :D 這個錯誤是由谷歌的網頁無效的UTF-8引起的,因爲你已經發現了.. Rebol根本無視(?)它。我打破了谷歌的錯誤,但我不記得.. –

+0

瞭解REBOL 作者:Nick Antonaccio –

回答

3

In Rebol this^ would have been read/binary and write/binary

在紅太,save是一個紅色的數據類型轉換爲二進制格式的序列化文本。所以如果你想save到JPEG文件,你需要提供一個image!值。 read獲取文本內容(現在僅限於UTF-8),因此您的使用情況無效。正確的路線應該是:

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

Is there a way to convert incoming content to UTF-8 so I can do the read?

從非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... 

紅會提供p羅伯轉換器在未來常用的文本編碼。同時,您可以使用此功能,或者爲您最常使用的編碼編寫適當的解碼器(使用轉換表)。

相關問題