... | ... | @@ -250,15 +250,23 @@ UTF-8은 8비트로 표현하는 방식이다. UTF-16은 주로 사용되는 BMP |
|
|
그래서 ASCII 영역(U+0000 ~ U+007F) 내의 문자인 알파벳 같은 경우는 1바이트 인코딩, 한글은 완성형은 AC00 ~ D7AF 영역에 매핑되어 있기때문에 UTF-8로 인코딩하면 3바이트로 인코딩이 된다. 주로 웹이나 DB에서 많이 사용된다.
|
|
|
<br />
|
|
|
* **BOM**
|
|
|
바이트 순서 표식(Byte Order Mark, BOM)은 유니코드에서 엔디안을 구별하기 위해 사용되는 문자로, 코드 포인트는 U+FEFF이다. (아랍어 표현꼴 마지막 문자로 할당되어 있다. 아랍어와의 특별한 상관관계는 없다.) 엔디안은 바이트를 배열하는 방법을 말하며, 큰 단위가 앞에 나오는 빅 엔디안과 작은 단위가 앞에 나오는 리틀 엔디안으로 나눌 수 있다. 두 경우에 속하지 않거나 둘을 모두 지원하는 것을 미들 엔디안 이라고 부른다.
|
|
|
바이트 순서 표식(Byte Order Mark, BOM)은 유니코드에서 엔디안을 구별하기 위해 사용되는 문자로, 코드 포인트는 U+FEFF이다. (아랍어 표현꼴 마지막 문자로 할당되어 있다. 아랍어와의 특별한 상관관계는 없다.) 엔디안은 바이트를 배열하는 방법을 말하며, 큰 단위가 앞에 나오는 빅 엔디안과 작은 단위가 앞에 나오는 리틀 엔디안으로 나눌 수 있다.
|
|
|
|
|
|
 
|
|
|
 
|
|
|
|
|
|
UTF-8은 바이트 순서가 정해져있기 때문에 BOM 문자가 필요없지만, UTF-16, UTF-32 에서는 엔디안의 종류에 따라서 문자열의 값이 완전히 달라지므로, 문자열의 엔디안을 구별할 수 있는 표식이 필요하다. 이를 위해 유니코드 문자열 맨 앞에 BOM 문자를 붙여서 맨 처음에 읽히는 BOM 문자의 값에 따라서 엔디안을 구별한다. 인코딩에 따른 BOM 문자 값은 다음과 같다.
|
|
|
|
|
|
|인코딩 방식|BOM 문자 값|
|
|
|
|-------------|---------------|
|
|
|
|UTF-8|EF BB BF|
|
|
|
|UTF-16 빅 엔디안|FE FF|
|
|
|
|UTF-16 리틀 엔디안|FF FE|
|
|
|
|UTF-32 빅 엔디안|00 00 FE FF|
|
|
|
|UTF-32 리틀 엔디안|FF FE 00 00|
|
|
|
|
|
|
UTF-8의 경우 엔디안 문제가 일어나지 않으므로 BOM 문자를 붙일 필요가 없지만, 해당 자료가 UTF-8 인코딩이라는 것을 나타내기 위한 표식으로 사용하는 경우도 있다. 편집기에 따라서 UTF-8로 저장할 때 BOM 문자를 자동으로 추가하는데, 유닉스와 같은 UTF-8에서 BOM 문자를 사용하지 않는 경우에는 BOM 문자를 일반 문자로 잘못 인식하여 문제가 발생할 수 있다.
|
|
|
|
|
|
UTF-8은 바이트 순서가 정해져있기 때문에 BOM 문자가 필요없지만, UTF-16, UTF-32 에서는 엔디안의 종류에 따라서 문자열의 값이 완전히 달라지므로, 문자열의 엔디안을 구별할 수 있는 표식이 필요하다. 이를 위해 유니코드 문자열 맨 앞에 BOM 문자를 붙여서 맨 처음에 읽히는 BOM 문자의 값에 따라서 엔디안을 구별한다.
|
|
|
|
|
|
```c#
|
|
|
adkfjkadjk;aljfd
|
|
|
```
|
|
|
|
|
|
|
|
|
|
... | ... | |