[C#] 한글 2byte 로 계산 하는 방법
2020. 6. 20. 16:49
728x90
반응형
한글을 2byte로 계산하기위해서 기본적으로 이해를 하셔야 하는 부분은 바로 Unicode 입니다.
해당 부분에 대한 이해없이 단순히 Encoding을 이용해서 Byte 수를 계산한다면,
한글자당 2~3 으로 byte수가 변하는 것을 경험하시게 될겁니다.
한줄로 요약한다면,
유니코드는 국제표준 문자표이고 UTF-8은 인코딩 방식입니다.
Unicode는 전세계 언어를 모두 표시할 수 있는 표준코드 입니다.
그래서 언어자체의 의미로 byte 수를 계산하려고 한다면 Unicode로 인코딩 해서 계산하여야 합니다.
그렇지 않다면, 아래와 같은 오류를 범하실 수 있습니다.
string str = "헬로우월드다";
byte[] data = Encoding.Default.GetBytes( str )
int count = data.Length;
// count = 18
기본적으로 System.Text.Encoding 클래스의 Default 를 사용하게 되면 UTF8 인코딩을 이용하게 됩니다.
UTF8 인코딩일 경우 한글 1글자당 3Byte 로 잡히기 때문에
위에 예시처럼 6글자의 한글일 경우 18byte 로 잡히게 됩니다.
즉, 일반적인 웹사이트에서 한글 1글자당 2byte로 표기 해달라는 요청에 UTF8 인코딩을 이용하게 되면,
어긋나는 결과가 나오게 됩니다.
이러한 요청에는 Unicode를 이용하여 Encoding 해줘야 합니다.
string str = "헬로우월드다";
byte[] data = Encoding.Unicode.GetBytes( str )
int count = data.Length;
// count = 12
동일한 예제를 Unicode로만 변경했을 경우, 우리가 원하는 한글 6글자에 12Byte 길이의 값을 가질 수 있습니다.
728x90
'Program Language > C#' 카테고리의 다른 글
[C#] Zeroformatter 사용 방법 (0) | 2020.07.08 |
---|---|
[C#] HttpWebRequest, WebClient, HttpClient 사용 방식에 대한 정리 (1) | 2020.06.30 |
[C#] ICloneable 인터페이스를 이용한 객체 복사 (1) | 2020.05.19 |
[C#] MSBuild 빌드 시 C# 언어 버전 변경 (0) | 2020.03.26 |
[C#] C#에서 unsafe 키워드 사용 방법 (0) | 2020.03.10 |