=?UTF-8?B?XXXX?=
메일전송에서 사용되는 인코딩 방식 중 하나인 것 같다. 주로 제목이나 보내거나 받은 사람, 파일 이름에 사용된다.
이 방식이 사용되는 이유는 메일 전송에서 사용되는 언어가 꼭 알파벳이라는 보장은 없다.
한글일 수도, 일본어일 수도 있다. 그렇게 되면 아스키값으로만 표기할 수 없다.
따라서 이 같은 형태를 취함으로써 사용가능한 문자열을 넓힌다.
형식은 다음과 같다.
=?charset?encoding?encoded-text?=
charset : 인코딩된 문자열의 charset을 의미한다.
encoding : B와 Q, 둘 중 한가지의 값을 가지며 B일 경우에는 Base64 인코딩이 되어있다는 의미이다.
encoded-text : 말 그대로 인코딩된 문자열이다.
다음은 예시이다.
=?UTF-8?B?44GC44GV==?=
정보를 확인해 보면 UTF-8로 인코딩 되어 있으며 Base64인코딩이 되어있다.
44GC44GV==를 디코딩 해 보면 "\xe3\x81\x82\xe3\x81\x95"가 나온다.
이 값은 UTF-8로 あさ, 아침을 의미한다.
UTF-8 문자열을 유니코드로 변환하는 방법은 디코딩 사이트를 사용하거나, 아래 사이트를 보고 풀어내는 방법이 있다.
주로 파이썬에서 테스트를 하는데 한글의 경우 순서가 맞지 않아 일본어를 테스트 해 보았다.
예시 문자열은 위에서 사용한 あさ"\xe3\x81\x82\xe3\x81\x95"이다.
< あさ "\xe3\x81\x82\xe3\x81\x95" >
3자리씩 끊어서 찾으면 위와 같다.
U+0x3042, U+0x3055가 각각 あ, さ 이다.
あさ의 실제 유니코드 값은 "\xaa\xa2", "\xaa\xb5" 이다.
따라서 베이스가 되는 U의 값은 0x7a60이 된다.
또는 UTF-8값을 hex값으로 변환한 뒤 0xe2d6e0를 빼주면 해당하는 값을 얻을 수 있다.
< Use Python >
파이썬을 이용하여 내용들을 종합해 보면
-> 인코딩 타입을 확인하고, B일 경우 Base64 디코딩
-> 디코딩 된 값을 charset에 맞게 유니코드로 변환
-> 출력
ref
http://ncona.com/2011/06/using-utf-8-characters-on-an-e-mail-subject/ddi
http://www.utf8-chartable.de/unicode-utf8-table.pl?start=12288&names=-&utf8=string-literal
'기타' 카테고리의 다른 글
CGC on Ubuntu (0) | 2016.08.24 |
---|---|
CGC? (0) | 2016.07.28 |
Google Map API 사용(Static) (0) | 2016.07.21 |
ntfs-mft (0) | 2016.05.02 |
los.sandbox (0) | 2016.04.25 |