2017-04-12 4 views
1

Actuellement, il n'y a pas vraiment de livres sur le rouge car il est si nouveau. Alors j'essaye de suivre un vieux livre de Rebol et de récupérer ce que je peux.

J'ai trouvé quelques commandes telles que read où je ne peux pas exécuter le code à cause du codage de fichier.

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

Dans ce Rebol^aurait été lu/binaire et d'écriture/binaire

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

est-il un moyen de convertir le contenu entrant en UTF-8 je peux faire la lecture? Ou existe-t-il d'autres types de lecture qui prennent en charge les formats non-UTF-8?

+0

Quel livre? : D Cette erreur est provoquée par UTF-8 non valide dans la page de google que vous avez découvert .. Rebol ignore simplement (?) It. J'ai cassé cette erreur google quelque part mais je ne me souviens pas .. –

+0

En savoir REBOL par Nick Antonaccio –

Répondre

3

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

En rouge aussi, save est pour convertir un type rouge à un texte sérialisée de format binaire. Donc, si vous voulez save dans un fichier JPEG, vous devez fournir une valeur image!. read récupère un contenu texte (limité à UTF-8 pour l'instant), votre utilisation est donc invalide. La ligne correcte devrait être:

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?

Pour obtenir une chaîne à partir d'une ressource de texte non-UTF-8, vous devez chercher la ressource sous forme binaire, puis écrire le convertisseur de l'homme d'un pauvre qui devrait fonctionner correctement pour le commun codage latin-1:

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

Son utilisation de la console:

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

Rouge fournira p convertisseurs de texte pour les codages de texte couramment utilisés à l'avenir. En attendant, vous pouvez utiliser cette fonction, ou écrire un décodeur approprié (en utilisant une table de conversion) pour les encodages que vous utilisez le plus souvent.