2017-01-25 2 views
1

Ich habe eine URL Safe codierte Zeichenfolge (von Perl erzeugt), die ich in Go dekodieren muss. Hier sind zwei Programme, in Perl und in Go - Perl funktioniert gut, aber Go geht Fehler auf. Ich kann es nicht verstehen. Bitte helfen!Wie URL dekodieren Base64 in Go, in Perl codiert?

=== Code Perl - funktioniert

#!/usr/bin/env perl 
use common::sense; 
use MIME::Base64::URLSafe; 

my $str = 'Oi6cQzmolrUhkgHsNehtj9p_OsasB_6CIeygK0owoxTsXCtVWyQi-7DXxIJiaV-kSc6PGNC6uNz5V0A9QOGCaeCy6PolQY2Lt_v4JM42VEbsuML8guHfMO0ydvbXVcCR-yLfkz5CO0f-P1hVqxJBD8qPvk1t1DRzqmHP41DSfIm_WzlhtITnd_Wjt6E3CFS78HL3XjJlM-QBW9Z_GZgic8y7TlOWFzCRUf2Q-EZschrDi9l81E93XBNKe8knInL_uFN_oK_ob7fjnkGJO54RNn3coVsrzuIoNa6AI6oWLfsaJ5NyQYor5P0'; 

say urlsafe_b64decode($str); 

=== Go-Code - steigt Fehler

package main 

import (
    b64 "encoding/base64" 
    "fmt" 
) 

func main() { 
    str := "Oi6cQzmolrUhkgHsNehtj9p_OsasB_6CIeygK0owoxTsXCtVWyQi-7DXxIJiaV-kSc6PGNC6uNz5V0A9QOGCaeCy6PolQY2Lt_v4JM42VEbsuML8guHfMO0ydvbXVcCR-yLfkz5CO0f-P1hVqxJBD8qPvk1t1DRzqmHP41DSfIm_WzlhtITnd_Wjt6E3CFS78HL3XjJlM-QBW9Z_GZgic8y7TlOWFzCRUf2Q-EZschrDi9l81E93XBNKe8knInL_uFN_oK_ob7fjnkGJO54RNn3coVsrzuIoNa6AI6oWLfsaJ5NyQYor5P0" 

    fmt.Println("source B64:", str) 
    _, err := b64.URLEncoding.DecodeString(str) 

    if err != nil { 
     fmt.Println("error b64:", err) 
    } 
} 

=== END

Als dekodieren kehrt abgeschnitten Ergebnis ist es unmöglich, um es im nächsten Schritt zu verwenden.

Antwort

1

Verwenden Sie die RawURLEncoding, wenn es keinen padding:

_, err := b64.RawURLEncoding.DecodeString(str) 
+0

Sieht aus wie Lösung arbeiten. Vielen Dank! – Demiurg

Verwandte Themen