Тип base64.Encoding

Тип base64.Encoding представляет собой конфигурацию кодировщика Base64. Он определяет алфавит и правила кодирования. Наиболее часто используются предопределенные переменные: base64.StdEncoding — стандартное кодирование Base64, и base64.URLEncoding — вариант для URL-безопасного кодирования. Основные методы типа: EncodeToString — кодирует байтовый срез в строку, DecodeString — декодирует строку в байтовый срез.

Синтаксис

go// Кодирование
encoded := encoding.EncodeToString(data)

// Декодирование
decoded, err := encoding.DecodeString(encodedStr)

Пример

Давайте закодируем строку "hello world" в стандартный Base64:

gopackage main

import (
  "encoding/base64"
  "fmt"
)

func main() {
  data := []byte("hello world")
  res := base64.StdEncoding.EncodeToString(data)
  fmt.Println(res)
}

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

go"aGVsbG8gd29ybGQ="

Пример

Декодируем строку обратно в исходные байты:

gopackage main

import (
  "encoding/base64"
  "fmt"
)

func main() {
  encoded := "aGVsbG8gd29ybGQ="
  res, err := base64.StdEncoding.DecodeString(encoded)
  if err != nil {
    fmt.Println("Error:", err)
    return
  }
  fmt.Println(string(res))
}

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

go"hello world"

Пример

Используем URL-безопасное кодирование для данных с символами, которые могут конфликтовать в URL:

gopackage main

import (
  "encoding/base64"
  "fmt"
)

func main() {
  data := []byte("data?with=special&chars")
  res := base64.URLEncoding.EncodeToString(data)
  fmt.Println(res)

  decoded, err := base64.URLEncoding.DecodeString(res)
  if err != nil {
    fmt.Println("Error:", err)
    return
  }
  fmt.Println(string(decoded))
}

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

go"ZGF0YT93aXRoPXNwZWNpYWwmY2hhcnM="
"data?with=special&chars"

Пример

При декодировании важно проверять ошибку, так как переданная строка может иметь невалидный формат Base64:

gopackage main

import (
  "encoding/base64"
  "fmt"
)

func main() {
  invalid := "invalid-base64!@#"
  res, err := base64.StdEncoding.DecodeString(invalid)
  if err != nil {
    fmt.Println("Error:", err)
    return
  }
  fmt.Println(res)
}

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

go"Error: illegal base64 data at input byte 8"

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

  • переменную base64.StdEncoding,
    которая представляет стандартный Base64-алфавит
  • переменную base64.URLEncoding,
    которая используется для URL-безопасного кодирования
  • переменную base64.RawStdEncoding,
    которая работает без дополнения символами '='
  • переменную base64.RawURLEncoding,
    которая комбинирует URL-алфавит и отсутствие дополнения