UNICODE ANSI euc-kr utf-8 헷갈리네요...

yun8085의 이미지

그냥 생각없이 변환하곤 했는데 개념을 확실히 정립 하려고 자료를 찾아 봤습니다.

ANSI와 euc-kr은 같은 개념이라고 생각 하면 될것 같은데

utf-8과 UNICODE의 관계는 어떻게 봐야 하나요??

Ultraedit로 실험 해봤는데 ANSI를 utf-8로 변환 하는거랑 ANSI를 unicode로 변환 하는거랑 차이가 없던데...
무슨 차이인가요???

cleansugar의 이미지

utf-8은 쉽게 말해 유니코드 중에서 ANSI 부분은 똑같이 1바이트, 유럽문자는 2바이트, 아시아문자는 3바이트 등으로 가변 표기하는 겁니다.

그래서 영어 문서는 크기를 절약하고 예전 것들과 호환될 수 있습니다.

utf-16은 모든 문자의 크기가 일정하고요.

재벌 2세가 재벌이 될 확률과
금메달리스트 2세가 금메달을 딸 확률이 비슷해지도록
자유오픈소스 대안화폐를 씁시다.

아이디의 아이디어 무한도전
http://blog.aaidee.com

귀태닷컴
http://www.gwitae.com

klutzy의 이미지

0. 먼저, ANSI와 euckr은 다른 개념입니다. ANSI를 한국에서 확장한 것이 euckr입니다. 비슷하게 일본에서도 eucjp라는 확장이 존재하고요. 그래서 같은 데이터가 인코딩에 따라 다르게 보이는 문제를 해결하기 위해서 "모든 문자에 유일한 값을 배정하자"는 개념이 유니코드입니다.

1. 유니코드 자체는 ansi/euckr/utf8 등과 같은 '바이트 인코딩'이 아닙니다. 유니코드는 문자를 그냥 숫자 하나로 매핑하는 개념입니다. 예를 들어 'A'는 65, '가'는 44032에 매핑됩니다.

2. 그런데 우리는 보통 임의의 큰 숫자를 저장하는 게 아니라, 가령 8비트 숫자들만 다루게 됩니다. 그렇다면 44032라는 숫자를 어떻게든 끊어서 8비트 안에 담아야 할 겁니다. 이것을 utf-8이라고 부릅니다.
utf8로 44032를 담으면 (234, 176, 128)이라는 3바이트 배열이 됩니다. 16진수로 표현해보면 0xEA 0xB0 0x80이고요. http://ko.wikipedia.org/wiki/%EA%B0%80 이 url에서 나타나는 퍼센트 값들이 바로 이것입니다.

3. 마찬가지로 16비트 기반으로 데이터를 저장하면 utf-16이 됩니다. 그런데 또 주의해야 할 게 우리는 보통 데이터를 8비트로만 담기 때문에, 16비트 데이터는 8비트 두 개로 저장하게 됩니다. 여기에서 엔디안이 튀어나오게 되고요(little endian, big endian).

4. utf16이 '모든 문자의 크기가 같다'는 것은 오래 된 미신입니다. 16비트면 가능한 조합은 2^16 = 65536이 될텐데, 그렇다는 말은 65536을 넘어가는 유니코드 문자는 역시 16비트 두 개 이상이 필요하게 됩니다.
그런데 우리의 입장에서 이런 문자는 거의 만날 일이 없고, 그래서 그냥 유니코드 중 65535까지만 지원하는 인코딩이 있었습니다. 이건 UCS-2라고 부르고, 현재는 거의 사용하지 않습니다.

5. utf8의 강점은 ANSI와 상당히 호환된다는 것입니다. (ANSI로도 'A'는 65였죠.) utf16의 강점은.. 2^16 = 65536이니까 한글이 16비트 한 단위에 깔끔하게 들어가게 됩니다. 즉 2바이트만 소요되죠. utf8이라면 3바이트가 소요됩니다.
개인적으로 저는 용량 이점보다 엔디안의 복잡함 + ANSI와 호환안됨의 두 단점이 더 크다고 봅니다.

댓글 달기

Filtered HTML

  • 텍스트에 BBCode 태그를 사용할 수 있습니다. URL은 자동으로 링크 됩니다.
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param><hr>
  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.

BBCode

  • 텍스트에 BBCode 태그를 사용할 수 있습니다. URL은 자동으로 링크 됩니다.
  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param>
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.

Textile

  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • You can use Textile markup to format text.
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param><hr>

Markdown

  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • Quick Tips:
    • Two or more spaces at a line's end = Line break
    • Double returns = Paragraph
    • *Single asterisks* or _single underscores_ = Emphasis
    • **Double** or __double__ = Strong
    • This is [a link](http://the.link.example.com "The optional title text")
    For complete details on the Markdown syntax, see the Markdown documentation and Markdown Extra documentation for tables, footnotes, and more.
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param><hr>

Plain text

  • HTML 태그를 사용할 수 없습니다.
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.
  • 줄과 단락은 자동으로 분리됩니다.
댓글 첨부 파일
이 댓글에 이미지나 파일을 업로드 합니다.
파일 크기는 8 MB보다 작아야 합니다.
허용할 파일 형식: txt pdf doc xls gif jpg jpeg mp3 png rar zip.
CAPTCHA
이것은 자동으로 스팸을 올리는 것을 막기 위해서 제공됩니다.