[go] Go 언어에서의 다양한 인코딩 방식 비교

Go 언어는 텍스트와 데이터를 다양한 방식으로 인코딩하고 디코딩하는 데 사용할 수 있는 기능을 제공합니다. 이번 포스트에서는 Go 언어에서 제공하는 다양한 인코딩 방식에 대해 비교해 보겠습니다.

UTF-8 인코딩

UTF-8은 가변 길이 문자 인코딩 방식으로, 유니코드 코드 포인트를 8비트 시퀸스로 변환합니다. Go 언어는 문자열을 UTF-8로 인코딩하고 디코딩하는 기능을 내장하고 있으며, utf8 패키지를 통해 UTF-8 인코딩 방식을 다룰 수 있습니다.

import "unicode/utf8"

func main() {
    str := "안녕, 世界"
    encoded := []byte(str)
    decoded, _ := utf8.DecodeRune(encoded)
    fmt.Println(decoded)
}

위 예제는 UTF-8로 인코딩된 문자열을 디코딩하는 과정을 보여줍니다.

Base64 인코딩

Base64는 이진 데이터를 텍스트 데이터로 변환하는 데 사용되는 인코딩 방식입니다. 이는 이메일 시스템을 비롯한 여러 프로토콜에서 이진 데이터를 안전하게 전송하기 위해 사용됩니다. Go 언어는 encoding/base64 패키지를 통해 Base64 인코딩을 지원합니다.

import b64 "encoding/base64"

func main() {
    data := "hello, 世界"
    encoded := b64.StdEncoding.EncodeToString([]byte(data))
    fmt.Println(encoded)
}

위 예제는 문자열을 Base64로 인코딩하는 방법을 보여줍니다.

JSON 인코딩

JSON은 데이터를 텍스트로 표현하는 경량 데이터 교환 형식입니다. Go 언어는 encoding/json 패키지를 통해 JSON 데이터를 인코딩하고 디코딩할 수 있습니다.

import "encoding/json"

type Person struct {
    Name string `json:"name"`
    Age  int    `json:"age"`
}

func main() {
    person := Person{Name: "철수", Age: 25}
    encoded, _ := json.Marshal(person)
    fmt.Println(string(encoded))
}

위 예제는 구조체를 JSON으로 인코딩하는 방법을 보여줍니다.

위의 내용을 통해 Go 언어에서 제공하는 다양한 인코딩 방식의 활용 및 차이를 살펴보았습니다. 이것은 데이터를 다루는 과정에서 매우 중요한 요소이므로, 적절한 인코딩 방식을 선택하는 일은 매우 중요합니다.

참고자료