Тип base64.Encoding
Тип base64.Encoding представляет собой конфигурацию
кодировщика Base64. Он определяет алфавит и правила
кодирования. Наиболее часто используются предопределенные
переменные: base64.StdEncoding — стандартное
кодирование Base64, и base64.URLEncoding —
вариант для URL-безопасного кодирования. Основные методы
типа: EncodeToString — кодирует байтовый срез
в строку, DecodeString — декодирует строку
в байтовый срез.
Синтаксис
// Кодирование
encoded := encoding.EncodeToString(data)
// Декодирование
decoded, err := encoding.DecodeString(encodedStr)
Пример
Давайте закодируем строку "hello world" в стандартный Base64:
package main
import (
"encoding/base64"
"fmt"
)
func main() {
data := []byte("hello world")
res := base64.StdEncoding.EncodeToString(data)
fmt.Println(res)
}
Результат выполнения кода:
"aGVsbG8gd29ybGQ="
Пример
Декодируем строку обратно в исходные байты:
package 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))
}
Результат выполнения кода:
"hello world"
Пример
Используем URL-безопасное кодирование для данных с символами, которые могут конфликтовать в URL:
package 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))
}
Результат выполнения кода:
"ZGF0YT93aXRoPXNwZWNpYWwmY2hhcnM="
"data?with=special&chars"
Пример
При декодировании важно проверять ошибку, так как переданная строка может иметь невалидный формат Base64:
package 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)
}
Результат выполнения кода:
"Error: illegal base64 data at input byte 8"
Смотрите также
-
переменную
base64.StdEncoding,
которая представляет стандартный Base64-алфавит -
переменную
base64.URLEncoding,
которая используется для URL-безопасного кодирования -
переменную
base64.RawStdEncoding,
которая работает без дополнения символами '=' -
переменную
base64.RawURLEncoding,
которая комбинирует URL-алфавит и отсутствие дополнения