Переменная base64.URLEncoding

Переменная base64.URLEncoding предоставляет кодировщик Base64, использующий URL-safe алфавит. В отличие от стандартного кодировщика base64.StdEncoding, URL-safe версия использует символы '-' вместо '+' и '_' вместо '/', что делает закодированную строку безопасной для использования в URL-адресах, именах файлов и JSON без необходимости экранирования. Эта переменная представляет собой экземпляр структуры base64.Encoding с предустановленным алфавитом и опцией дополнения.

Синтаксис

gobase64.URLEncoding.EncodeToString(data []byte) string
base64.URLEncoding.DecodeString(s string) ([]byte, error)

Пример

Давайте закодируем простую строку в URL-safe Base64:

gopackage main

import (
  "encoding/base64"
  "fmt"
)

func main() {
  data := []byte("Hello, World!")
  encoded := base64.URLEncoding.EncodeToString(data)
  fmt.Println(encoded)
}

Результат выполнения кода:

go"SGVsbG8sIFdvcmxkIQ=="

Пример

Давайте закодируем бинарные данные, содержащие символы, которые в стандартном Base64 превратились бы в '+' и '/':

gopackage main

import (
  "encoding/base64"
  "fmt"
)

func main() {
  data := []byte{0xFF, 0xFE, 0xFD, 0xFC}
  encoded := base64.URLEncoding.EncodeToString(data)
  fmt.Println(encoded)
}

Результат выполнения кода:

go"__7w"

Пример

Давайте декодируем закодированную URL-safe Base64 строку обратно в исходные данные:

gopackage main

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

func main() {
  encoded := "SGVsbG8sIFdvcmxkIQ=="
  decoded, err := base64.URLEncoding.DecodeString(encoded)
  if err != nil {
    log.Fatal(err)
  }
  fmt.Println(string(decoded))
}

Результат выполнения кода:

go"Hello, World!"

Пример

Давайте сравним результат кодирования с помощью base64.StdEncoding и base64.URLEncoding для одних и тех же данных:

gopackage main

import (
  "encoding/base64"
  "fmt"
)

func main() {
  data := []byte("abc?")
  std := base64.StdEncoding.EncodeToString(data)
  url := base64.URLEncoding.EncodeToString(data)
  fmt.Println("Стандартный Base64:", std)
  fmt.Println("URL-safe Base64:", url)
}

Результат выполнения кода:

go"Стандартный Base64: YWJjPw=="
"URL-safe Base64: YWJjPw=="

Смотрите также

  • переменную base64.StdEncoding,
    использующую стандартный Base64 алфавит для кодирования
  • переменную base64.RawURLEncoding,
    работающую без символов дополнения для URL-safe данных
  • функцию base64.Encoding.EncodeToString,
    которая кодирует данные в строку Base64
  • функцию base64.Encoding.DecodeString,
    которая декодирует строку Base64 в данные