작성일 : 13-02-06 15:04
|
[Html] URL 한글문자
|
|
|
글쓴이 :
조형래
 조회 : 3,518
|
여러가지 인코딩에 대한 정리...
(인코딩 종류-
http://msdn2.microsoft.com/en-us/library/system.text.encodinginfo.getencoding.aspx)
1. 한글을 단순히 유니코드 표기하는 경우.
'가' 라는 한글을 유니코드 형태로 나타내게 되면 '\uAC00' 가 되고,
'가나다' 를 유니코드 형태로 나타내게 되면 ' \uac00\ub098\ub2e4' 가 된다.
정확하게는 ' u+ac00u+b098u+b2e4' 표시
2. 한글을 UTF-8 (URL Encode) 로 변환하는 경우
'가'는 '%ea%b0%80'이고, '가나다'는 '%ea%b0%80%eb%82%98%eb%8b%a4'가 된다.
(변환기 - http://opinionatedgeek.com/DotNet/Tools/UrlEncode/Encode.aspx)
또 아래와 같이 보일수도 있는데,
'가'는 '=EA=B0=80' 이고, '가나다'는 '=EA=B0=80=EB=82=98=EB=8B=A4' 가 된다.
(Tool - http://www.codeproject.com/string/UTF8.asp)
저렇게 표기되어 있다고 해도, e-메일등에서 사용하는 QP(Quoted Printable)과는 다름
QP의 경우에는 '가나다'가 "가나 다" => =B0=A1=B3=AA =B4=D9 의 형태로,
한글자를 16bit 로 표현을 한다.
(이건 '가'를 KSC5601 의 hexa 값으로 0xB0A1 를 나타낸 값을 이용함 아래 참조)
※ Quoted Printable (QP)란?
- 전자메일 서비스는 초기에 RFC 822를 기반으로 정보교환이 이루어졌으며,
이 RFC 822는 정보교환 매체를 7비트인 US-ASCII 텍스트로 사용할 것을 제한한다.
- SMTP(단순 우편 전송 프로토콜)는 7비트의 길이만을 통과하므로, 8비트를 구성된 문서,
즉 8비트를 사용 하는 유럽(독일,프랑스) 언어, 16비트를 사용하는 동양권(한국,중국,일본)
언어등에서는 msb=1인 경우 이 msb가 짤려나가므로 문제가 생기게 된다.
- 해결책으로 8비트 문자코드를 사용하는 나라에서는, 각 언어별 문자세트를 지정하고
8비트 문자들을 7비트 영문 아스키로 변환(인코딩)한 후 전송하고,
수신측에서 이를 다시 8비트로 변환(디코딩)하는 방법을 사용한다.
- 결론적으로,
MIME에서의 Content-Transfer-Encoding 방식으로 사용되며,
Base64와 Quoted-Printable 방식은 8bit코드를 7bit코드로 인코딩하고,
다시 7bit를 8bit로 디코딩한다. 그러므로 HTML문서를 전자메일로(SMTP로) 보낼 때나,
그래픽 파일을 첨부파일로 보낼 때에 이들 문서들은 7bit 텍스트(문자 메시지) 이외에
8 bit 이미지 등을 포함하고 있으므로 Base64와 Quoted-Printable 방식 중에 하나를
사용해야 한다. 실제로 Outlook Express는 이 두가지 중 하나로 설정되어 있다.
3, 한글 (KSC5601)을 UTF-8로 표기하는 경우
이럴 경우에는
1) KSC5601 -> KSC5601용 유니코드로 변환하고,
(예)
'가'의 KSC5601 코드가 0xB0A1 (십진수로는 45217) 울,
/* 0xAC00 */ 0xB0A1 등의 테이블을 참고하여, 0xAC00 형태로 변환
2) KSC5601용 유니코드를 -> UTF-8로 shift 등의 연산으로 변환(자체로직)
3) 그리고 UTF-8 문자열(character set)형태로 보면,
'안녕하세' 라는 문자열이 '?덈뀞?섏꽭' 형태가 된다.
- 이상 -
|
|