일반적으로 컴퓨터에서 텍스트 데이터는 문자열로 표현된다. 이 문자열은 유니코드(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 패키지
이상으로 문자열 인코딩에 대한 블로그를 마치겠습니다. 감사합니다.