ASP.NET UTF-8로 웹사이트 개발 방법
1. UTF-8이란?
(1) UCS-2
- 국제 문자 세트(UCS, Universal Character Set, 범용 문자 집합)는 ISO 10646으로 정의된 문자 인코딩의 국제표준
- 2바이트 고정형 인코딩. 각 글자들을 0 ~ 65535(0 x FFFF) 사이의 코드 값으로 매겨놓고 각 값들을 2바이트로 표현.
- Endian 관련해서 Big Endian 과 Little Endian으로 표현이 가능
(2) UCS-4
- 4바이트 고정형 인코딩.0 ~ 65535(0 x FFFF) 까지의 단일 코드, 즉 4바이트로 한 글자를 표현
- 길이를 제외하곤 USC-2와 거의 동일
- USC-4는 USC-2보다 더 많은 수의 글자를 표현할 수 있으나, USC-2에 비해 2배의 저장공간을 필요로 한다.
(3). UTF-7
- 유니코드의 mail safe version. RFC1642에 정의
- BASE64 와 비슷한 방식을 통해 유니코드를 7bit로 표현
(4). UTF-8
- 유니코드를 위한 가변 길이 문자 인코딩 방식
- 유니코드 한 문자를 나태내기 위해 1바이트에서 4바이트까지를 사용
- U+0000부터 U+007F 범위에 있는 아스키 문자들은 UTF-8에서 1바이트만으로 표시
- 4바이트로 표현되는 문자는 모두 기본 다국어 평면(BMP) 바깥의 유니코드 문자이며, 거의 사용되지 않는다.
(5). UTF-16
- UCS-2와 UCS-4를 적절하게 혼합해서 사용하는 방식
- BMP(Basic Multilingual Plane)에 들어있는 글자는 2바이트로 표현하게 되고 그 외의 글자들은 4바이트를 이용해서 표현
Encoding | UTF-8 | UTF-16BE | UTF-16LE | UTF-32BE | UTF-32LE |
'가' | EA BO 80 | AC 00 | 00 AC | 00 00 AC 00 | 00 AC 00 00 |
Smallest Code Point | 0000 | 0000 | 0000 | 0000 | 0000 |
Largest Code Point | 10FFFF | 10FFFF | 10FFFF | 10FFFF | 10FFFF |
Code Unit Size | 8 bits | 16 bits | 16 bits | 32 bits | 32 bits |
Byte Order | N/A | Big-Endian | Little-Endian | Big-Enian | Little-Endian |
Byte Order Mark(BOM) | EF BB BF | FE FF | FF FE | 00 00 FE FF | FF FE 00 00 |
Minimal Bytes | 1 | 2 | 2 | 4 | 4 |
Maximal Bytes | 4 | 4 | 4 | 4 | 4 |
[UNICODE Encoding 방법 특징 비교]
2. 개발 방법
(1) 설정
① web.config 설정
<configuration>
<system.web>
<globalization fileEncoding="utf-8" requsponseEncoding="utf-8" culture="ko-kr" uiCulture="ko-kr"/>
</system.web>
</configuration>
② html
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
....
(2) 모든 문서(.ascx, .aspx, .resx, .cshtml, .cs, .js, .html, .css, .xml)를 [유니코드(서명 있는 UTF-8) - 코드 페이지 65001] 인코딩으로 저장
- 파일(F) -> 고급저장 옵션(V)
(3) 데이터베이스(테이블) 생성시, 다국어 데이터가 삽입되는 컬럼은 nchar, nvarchar, ntext 등의 n이 붙은 데이터 형식으로 설정
(4) 데이터 INSERT나 UPDATE시 nchar, nvarchar 등등의 다국어 지원 컬럼에 삽입되는 변수 앞에는 N을 붙여줌
3. VBScript 이용하여 모든 문서 서명 있는 UTF-8로 저장
(1) VBScript소스
[Fileutf-8ToEncoding.vbs]
Option Explicit
Dim arrArgs
Dim strSourcePaht
Dim strDestPath
Dim strApplyExt
Dim blsMove
Dim nDays
Dim arrApplyExt
Dim nlndex
Set arrArgs = WScript. Arguments
strSourcePaht = ""
strDestPaht = ""