[go] 문자열 인코딩 (String Encoding)

일반적으로 컴퓨터에서 텍스트 데이터는 문자열로 표현된다. 이 문자열은 유니코드(Unicode) 형식으로 인코딩되어 있으며, 이 인코딩 방식에는 여러 가지가 있다. 이번 블로그에서는 UTF-8과 UTF-16 이 두가지 주요 인코딩 방식에 대해 알아보고, Go 언어에서는 이러한 문자열 인코딩을 어떻게 다루는지 살펴보겠습니다.

UTF-8

UTF-8은 가변 길이 문자 인코딩 방식으로, ASCII 문자는 1바이트로 표현되고, 한국어, 중국어와 같은 다국어 문자들은 3바이트로 표현됩니다. 이 방식은 인터넷에서 가장 많이 사용되며, ASCII 호환성을 유지하면서 다국어 문자를 효율적으로 표현할 수 있는 장점이 있습니다.

UTF-16

UTF-16은 고정 길이 문자 인코딩 방식으로, 모든 문자를 2바이트 또는 4바이트로 표현합니다. UTF-16은 유니코드 코드 포인트를 16비트나 32비트 숫자로 나타내며, BMP(Basic Multilingual Plane) 외의 문자에 대한 처리가 복잡할 수 있습니다.

Go에서의 문자열 다루기

Go 언어에서는 UTF-8이 기본적으로 사용되며, string 타입은 UTF-8 문자열을 처리하기 위한 기본 데이터 타입입니다. Go 언어에서는 unicode/utf8 패키지를 사용하여 UTF-8 문자열을 다룰 수 있습니다.

package main

import (
	"fmt"
	"unicode/utf8"
)

func main() {
	str := "안녕하세요"
	fmt.Println(len(str))                                // 출력: 15
	fmt.Println(utf8.RuneCountInString(str))              // 출력: 5
}

위의 예제에서 len 함수는 바이트 수를, utf8.RuneCountInString 함수는 문자 수를 출력합니다. 이를 통해 Go 언어에서 문자열을 다루는 방법을 확인할 수 있습니다.

결론

문자열은 컴퓨터에서 다양한 형태로 인코딩되며, UTF-8과 UTF-16은 가장 널리 사용되는 두 가지 방식입니다. Go 언어는 UTF-8을 기본적으로 사용하며, 유니코드 문자열을 다루기 위한 다양한 패키지들을 제공합니다. 문자열을 다룰 때는 해당 문자열의 인코딩 방식을 이해하고, 적절한 처리를 해주어야 합니다.

참고 문헌: Go 언어 공식 문서 - unicode/utf8 패키지

이상으로 문자열 인코딩에 대한 블로그를 마치겠습니다. 감사합니다.