"Unicode"의 두 판 사이의 차이

한국 데비안 사용자 모임
둘러보기로 가기 검색하러 가기
 
(다른 사용자 한 명의 중간 판 2개는 보이지 않습니다)
4번째 줄: 4번째 줄:
 
다음은 [http://http//unicode.org/ unicode] 공식 홈페이지에서 가져온 내용이다.
 
다음은 [http://http//unicode.org/ unicode] 공식 홈페이지에서 가져온 내용이다.
  
어떤 플랫폼, 어떤 프로그램, 어떤 언어에도 상관없이 유니코드는 모든 문자에 대해 고유 번호를 제공합니다. 기본적으로 컴퓨터는 숫자만 처리합니다. 글자나 다른 문자에도 숫자를 지정하여 저장합니다. 유니코드가 개발되기 전에는 이러한 숫자를 지정하기 위해 수백 가지의 다른 기호화 시스템을 사용했습니다. 단일 기호화 방법으로는 모든 문자를 포함할 수 없었습니다. 예를 들어 유럽 연합에서만 보더라도 모든 각 나라별 언어를 처리하려면 여러 개의 다른 기호화 방법이 필요합니다. 영어와 같은 단일 언어의 경우도 공통적으로 사용되는 모든 글자, 문장 부호 및 테크니컬 기호에 맞는 단일 기호화 방법을 갖고 있지 못하였습니다.
+
<pre>
 +
어떤 플랫폼, 어떤 프로그램, 어떤 언어에도 상관없이 유니코드는 모든 문자에 대해 고유 번호를 제공합니다. 기본적으로 컴퓨터는 숫자만 처리합니다. 글자나 다른 문자에도 숫자를 지정하여 저장합니다. 유니코드가 개발되기 전에는 이러한 숫자를 지정하기 위해 수백 가지의 다른 기호화 시스템을 사용했습니다. 단일 기호화 방법으로는 모든 문자를 포함할 수 없었습니다. 예를 들어 유럽 연합에서만 보더라도 모든 각 나라별 언어를 처리하려면 여러 개의 다른 기호화 방법이 필요합니다. 영어와 같은 단일 언어의 경우도 공통적으로 사용되는 모든 글자, 문장 부호 및 테크니컬 기호에 맞는 단일 기호화 방법을 갖고 있지 못하였습니다.
 
   
 
   
이러한 기호화 시스템은 또한 다른 기호화 시스템과 충돌합니다. 즉 두 가지 기호화 방법이 두 개의 다른 문자에 대해 같은 번호를 사용하거나 같은 문자에 대해 다른 번호를 사용할 수 있습니다. 주어진 모든 컴퓨터(특히 서버)는 서로 다른 여러 가지 기호화 방법을 지원해야 합니다. 그러나, 데이터를 서로 다른 기호화 방법이나 플랫폼 간에 전달할 때마다 그 데이터는 항상 손상의 위험을 겪게 됩니다. 유니코드(unicode)로 모든 것을 해결할 수 있습니다!
+
이러한 기호화 시스템은 또한 다른 기호화 시스템과 충돌합니다. 즉 두 가지 기호화 방법이 두 개의 다른 문자에 대해 같은 번호를 사용하거나 같은 문자에 대해 다른 번호를 사용할 수 있습니다. 주어진 모든 컴퓨터(특히 서버)는 서로 다른 여러 가지 기호화 방법을 지원해야 합니다. 그러나, 데이터를 서로 다른 기호화 방법이나 플랫폼 간에 전달할 때마다 그 데이터는 항상 손상의 위험을 겪게 됩니다. 유니코드(unicode)로 모든 것을 해결할 수 있습니다!
 +
</pre>
  
 
=== 유니코드(unicode)란? ===
 
=== 유니코드(unicode)란? ===
18번째 줄: 20번째 줄:
 
=== UTF-8이란? ===
 
=== UTF-8이란? ===
  
* '''간단히 말하면 유니코드로 인코딩하는 방식 중의 하나'''로, UTF-16은 일반 유니코드(Unicode2.0/iso-10646 UCS-2와 동일)로
+
* '''간단히 말하면 유니코드로 인코딩하는 방식 중의 하나'''로, UTF-16은 일반 유니코드(Unicode2.0/iso-10646 UCS-2와 동일)로 모든 문자를 16 비트로 표시하지만,
모든 문자를 16 비트로 표시하지만, 이에 반해 UTF-8은 유니코드의 각 문자를 1-3개의 byte로 다르게 표현한 것이다.
+
이에 반해 UTF-8은 유니코드의 각 문자를 1-3개의 byte로 다르게 표현한 것이다.
 
* UTF-8은 unicode값 0000 - 007F까지는 1 byte로, 그 다음부터 07FF까지는 2 byte, 그 다음부터 FFFF까지는 3 바이트를 사용한다.
 
* UTF-8은 unicode값 0000 - 007F까지는 1 byte로, 그 다음부터 07FF까지는 2 byte, 그 다음부터 FFFF까지는 3 바이트를 사용한다.
 
* 장점으로는 ASCII(0000-007f)까지 1 바이트를 사용하므로 아스키(ASCII) 기반과 호환이 되고 아스키(ASCII)문자의 사용이 많을 때 사용하면 일반 유니코드를 사용할 때보다 오버헤드가 작게 된다. 단점으로는 한글 및 한자와 같이 3 바이트로 표시되는 문자의 사용이 많을 때는 오버 헤드가 크게 된다.
 
* 장점으로는 ASCII(0000-007f)까지 1 바이트를 사용하므로 아스키(ASCII) 기반과 호환이 되고 아스키(ASCII)문자의 사용이 많을 때 사용하면 일반 유니코드를 사용할 때보다 오버헤드가 작게 된다. 단점으로는 한글 및 한자와 같이 3 바이트로 표시되는 문자의 사용이 많을 때는 오버 헤드가 크게 된다.
40번째 줄: 42번째 줄:
  
 
먼저 패키지를 설치한다.
 
먼저 패키지를 설치한다.
  # apt-get install locales
+
 
 +
<pre>
 +
# apt-get install locales
 +
</pre>
  
 
만약 locales 패키지가 이미 설치되어 있다면
 
만약 locales 패키지가 이미 설치되어 있다면
# dpkg-reconfigure locales
+
<pre>
 +
# dpkg-reconfigure locales
 +
</pre>
 
을 입력하여
 
을 입력하여
  
 +
<pre>
 
                               | locales 설정중 |
 
                               | locales 설정중 |
Locale is a framework to switch between multiple languages for users
+
Locale is a framework to switch between multiple languages for users
can select to use their language, country, characters, collation order,  
+
can select to use their language, country, characters, collation order,  
etc.  
+
etc.  
Choose which locales to generate.  The selection will be saved
+
Choose which locales to generate.  The selection will be saved
`/etc/locale.gen', which you can also edit manually (you need to run `locale-gen' afterwards).                                                                                                                           
+
`/etc/locale.gen', which you can also edit manually (you need to run `locale-gen' afterwards).                                                                                                                           
 
   
 
   
Select locales to be generated.
+
Select locales to be generated.
 
   
 
   
[  ] kl_GL.UTF-8 UTF-8
+
[  ] kl_GL.UTF-8 UTF-8
[  ] ko_KR.EUC-KR EUC-KR
+
[  ] ko_KR.EUC-KR EUC-KR
[*] ko_KR.UTF-8 UTF-8
+
[*] ko_KR.UTF-8 UTF-8
[  ] kw_GB ISO-8859-1
+
[  ] kw_GB ISO-8859-1
 
   
 
   
 
                       <Ok>                        <Cancel>
 
                       <Ok>                        <Cancel>
 +
</pre>
  
 
생성할 로케일 목록에서 '''ko_KR.UTF-8'''을 꼭 선택하도록 한다.
 
생성할 로케일 목록에서 '''ko_KR.UTF-8'''을 꼭 선택하도록 한다.
  
 
또는 /etc/locale.gen 파일을 열어  
 
또는 /etc/locale.gen 파일을 열어  
# vim /etc/locale.gen
+
<pre>
 +
# vim /etc/locale.gen
 +
</pre>
  
 
ko_KR.UTF-8 UTF-8 을 추가하고
 
ko_KR.UTF-8 UTF-8 을 추가하고
ko_KR.UTF-8 UTF-8
+
<pre>
 +
ko_KR.UTF-8 UTF-8
 +
</pre>
  
 
root로 locale-gen을 실행하면 된다.
 
root로 locale-gen을 실행하면 된다.
# locale-gen
+
<pre>
 
+
# locale-gen
 +
</pre>
 
외부에서 리눅스에 ssh 접속 등을 할 때는 [[쉘에서 한글 출력 팁|이 페이지]] 참고.
 
외부에서 리눅스에 ssh 접속 등을 할 때는 [[쉘에서 한글 출력 팁|이 페이지]] 참고.
  
 
=== 한글 입력기 설치 ===
 
=== 한글 입력기 설치 ===
 
nabi나 scim을 설치한다.  
 
nabi나 scim을 설치한다.  
  # apt-get install nabi        (또는 apt-get install scim scim-hangul)
+
<pre>
 +
# apt-get install nabi        (또는 apt-get install scim scim-hangul)
 +
</pre>
  
 
=== X 윈도우 설정 ===
 
=== X 윈도우 설정 ===
 
.xinitrc 파일을 UTF-8에 맞게 수정한다.  
 
.xinitrc 파일을 UTF-8에 맞게 수정한다.  
  
export LANG=ko_KR.UTF-8              <-- UTF-8로 지정했다.
+
<pre>
export LC_ALL=ko_KR.UTF-8            <-- LANGUAGE가 지정되지 않았을 때, 모든 LC_변수들의 값을 UTF-8로 통일한다.
+
export LANG=ko_KR.UTF-8              <-- UTF-8로 지정했다.
export XMODIFIERS="@im=nabi"        <-- XIM으로 nabi를 지정했다.
+
export LC_ALL=ko_KR.UTF-8            <-- LANGUAGE가 지정되지 않았을 때, 모든 LC_변수들의 값을 UTF-8로 통일한다.
export GTK_IM_MODULE=hangul2        <-- XIM을 안쓸 때, GTK2의 입력 모듈을 hangul2를 쓰도록 지정했다.
+
export XMODIFIERS="@im=nabi"        <-- XIM으로 nabi를 지정했다.
'사용하는 윈도매니저'  
+
export GTK_IM_MODULE=hangul2        <-- XIM을 안쓸 때, GTK2의 입력 모듈을 hangul2를 쓰도록 지정했다.
 +
'사용하는 윈도매니저'
 +
</pre>
  
 
== 프로그램별 문제 해결 ==
 
== 프로그램별 문제 해결 ==

2017년 11월 2일 (목) 04:35 기준 최신판

Unicode(Universal character set Transformation Format)

Unicode란 무엇이고 UTF-8은 또 무엇인가?

다음은 unicode 공식 홈페이지에서 가져온 내용이다.

어떤 플랫폼, 어떤 프로그램, 어떤 언어에도 상관없이 유니코드는 모든 문자에 대해 고유 번호를 제공합니다. 기본적으로 컴퓨터는 숫자만 처리합니다. 글자나 다른 문자에도 숫자를 지정하여 저장합니다. 유니코드가 개발되기 전에는 이러한 숫자를 지정하기 위해 수백 가지의 다른 기호화 시스템을 사용했습니다. 단일 기호화 방법으로는 모든 문자를 포함할 수 없었습니다. 예를 들어 유럽 연합에서만 보더라도 모든 각 나라별 언어를 처리하려면 여러 개의 다른 기호화 방법이 필요합니다. 영어와 같은 단일 언어의 경우도 공통적으로 사용되는 모든 글자, 문장 부호 및 테크니컬 기호에 맞는 단일 기호화 방법을 갖고 있지 못하였습니다.
 
이러한 기호화 시스템은 또한 다른 기호화 시스템과 충돌합니다. 즉 두 가지 기호화 방법이 두 개의 다른 문자에 대해 같은 번호를 사용하거나 같은 문자에 대해 다른 번호를 사용할 수 있습니다. 주어진 모든 컴퓨터(특히 서버)는 서로 다른 여러 가지 기호화 방법을 지원해야 합니다. 그러나, 데이터를 서로 다른 기호화 방법이나 플랫폼 간에 전달할 때마다 그 데이터는 항상 손상의 위험을 겪게 됩니다. 유니코드(unicode)로 모든 것을 해결할 수 있습니다!

유니코드(unicode)란?

전세계의 문자들을 표시하기 위한 표준코드이다. 유니코드는 텍스트나 스크립트 문자에 대한 바이너리 코드를 확립하기 위한 완전히 새로운 아이디어이다. 공식적으로는 "세계문자 표준 - 유니코드"라고 불리는 이 코드 체계는 "세계 각국의 다양한 현대 언어로 작성된 텍스트에 대해 상호교환, 처리 및 표현"을 용이하게 하기 위한 시스템이다.

현재 유니코드 표준은 24 개 언어를 지원하기 위해 34,168 개의 개별 코드 문자를 담고 있는데, 이 문자들은 세계 주요 언어로 작성된 문자들을 모두 충족시키기에 충분하며, 심지어 여러 가지 언어로 작성된 고문서(古文書)까지도 지원할 수 있다. 현재 아직 포함되지 않은 몇 가지 현대 언어를 추가하기 위한 작업이 진행 중이다.

UTF-8이란?

  • 간단히 말하면 유니코드로 인코딩하는 방식 중의 하나로, UTF-16은 일반 유니코드(Unicode2.0/iso-10646 UCS-2와 동일)로 모든 문자를 16 비트로 표시하지만,

이에 반해 UTF-8은 유니코드의 각 문자를 1-3개의 byte로 다르게 표현한 것이다.

  • UTF-8은 unicode값 0000 - 007F까지는 1 byte로, 그 다음부터 07FF까지는 2 byte, 그 다음부터 FFFF까지는 3 바이트를 사용한다.
  • 장점으로는 ASCII(0000-007f)까지 1 바이트를 사용하므로 아스키(ASCII) 기반과 호환이 되고 아스키(ASCII)문자의 사용이 많을 때 사용하면 일반 유니코드를 사용할 때보다 오버헤드가 작게 된다. 단점으로는 한글 및 한자와 같이 3 바이트로 표시되는 문자의 사용이 많을 때는 오버 헤드가 크게 된다.

현재까지의 문자 인코딩. 무엇이 문제인가?

  • 요즘 유행하는 "아햏햏" "뚫훍뚫훍" "쀍" 등의 글자는 일반적인 리눅스 환경에서는 입력되지도 않고, 출력하기도 쉽지 않다. 이런 문자들은 현재(20세기 말) 널리 쓰이는 표준 완성형(EUC)에는 없는 문자이기 때문이다.
  • 특히 리눅스 사용자와 MS의 윈도우즈 사용자가 같이 IRC 채팅을 할 때 MS 윈도우즈에서 mIRC로 위와 같은 글자를 입력하게 되면

확장 완성형이라는 윈도우즈 전용 인코딩으로 뿌려지기 때문에 윈도우즈 사용자에게만 보이고, 리눅스와 같은 다른 환경에서는 글자가 깨지거나 아무것도 보이지 않는다.

이와 같은 문제를 해결하기 위한 대안이 바로 유니코드(unicode)다.

이 문서는 무엇을 다루는가?

이 문서는 데비안 GNU/Linux에서 UTF-8 코드를 사용하기 위한 설정 및 UTF-8 코드를 사용할 경우 생기는 문제점과 해결방법에 대해 다룬다.

시스템 기본 설정

locales 설정

locales 패키지를 설치하고 설정한다.


먼저 패키지를 설치한다.

# apt-get install locales

만약 locales 패키지가 이미 설치되어 있다면

# dpkg-reconfigure locales

을 입력하여

                               | locales 설정중 |
Locale is a framework to switch between multiple languages for users
can select to use their language, country, characters, collation order, 
etc. 
Choose which locales to generate.  The selection will be saved
`/etc/locale.gen', which you can also edit manually (you need to run `locale-gen' afterwards).                                                                                                                           
 
Select locales to be generated.
 
[  ] kl_GL.UTF-8 UTF-8
[  ] ko_KR.EUC-KR EUC-KR
[*] ko_KR.UTF-8 UTF-8
[  ] kw_GB ISO-8859-1
 
                      <Ok>                        <Cancel>

생성할 로케일 목록에서 ko_KR.UTF-8을 꼭 선택하도록 한다.

또는 /etc/locale.gen 파일을 열어

# vim /etc/locale.gen

ko_KR.UTF-8 UTF-8 을 추가하고

ko_KR.UTF-8 UTF-8

root로 locale-gen을 실행하면 된다.

# locale-gen

외부에서 리눅스에 ssh 접속 등을 할 때는 이 페이지 참고.

한글 입력기 설치

nabi나 scim을 설치한다.

# apt-get install nabi         (또는 apt-get install scim scim-hangul)

X 윈도우 설정

.xinitrc 파일을 UTF-8에 맞게 수정한다.

export LANG=ko_KR.UTF-8              <-- UTF-8로 지정했다.
export LC_ALL=ko_KR.UTF-8            <-- LANGUAGE가 지정되지 않았을 때, 모든 LC_변수들의 값을 UTF-8로 통일한다.
export XMODIFIERS="@im=nabi"         <-- XIM으로 nabi를 지정했다.
export GTK_IM_MODULE=hangul2         <-- XIM을 안쓸 때, GTK2의 입력 모듈을 hangul2를 쓰도록 지정했다.
'사용하는 윈도매니저'

프로그램별 문제 해결

  • UTF-8 환경에서 프로그램 사용 시 문제점과 해결 방법을 나열한다.
  • 각 카테고리는 데비안 공식 사이트에 있는 카테고리를 그대로 사용한다.

편집기(Editors)

vim: UTF-8 입출력하는 데도 문제가 없더군요!

GNOME(GNOME)

그놈터미널 : mlterm보다도 그놈 터미널이 더 UTF-8 사용하기가 좋네요. 은돋음, 은바탕이나 윈도 굴림체 등으로 폰트를 설정하면 메뉴에서 euc-kr <-> utf-8 선택하는 것만으로 왔다갔다 할 수 있습니다. 그놈 터미널 추천합니다! 또한 그놈터미널2에서 인코딩을 Korean UHC로 하면 MS 윈도우즈에서 사용하는 확장완성형을 보고 쓸 수가 있습니다. 이 방법으로 윈도우즈 사용자와도 깨지는 글자없이 채팅을 할 수가 있습니다.

네트워크(Network)

  • bitchx: 유니코드를 지원하지 않기 때문에 약간의 문제가 있습니다. 입력할때 한글이 물음표로 표시되고, UTF-8 문자열을 터미널 제어 코드로 인식해서 깨져 나오기도 합니다. 이 문제는 LANG=ko_KR.UTF-8 환경에서 irssi를 쓰면 해결됩니다.
  • xchat : xchat에서도 irc 입력창에서 /charset utf-8 명령을 쳐주면 UTF-8 채팅이 됩니다. 또한 xchat2에서도 /charset cp949 명령을 주면 역시 확장완성형을 사용할 수 있습니다. 폰트는 ttf-unfonts, ttf-alee, 한겨레결체, 조선일보체나 윈도 굴림, 네이버사전체 같이 유니코드 한글이 포함된 것을 사용해야 합니다.
  • chatzilla : 챗질라는 모질라 웹 브라우저에 딸려오는 IRC 클라이언트입니다. 역시 /charset utf-8 명령으로 UTF-8 채팅이 가능합니다.

기타 참고 내용

  • IRC는 인터넷 릴레이 채팅을 말한다.
  • MS 윈도우즈에서 xchat과 모질라 모두 MS 윈도우즈용 버전이 있기 때문에 윈도우즈에서 사용하기에도 편리하다. 윈도우즈에서는 단지 irc 입력창에 /charset utf-8 명령을 주는 것만으로 UTF-8 채팅이 된다. 하지만, 윈도우즈에서 많이 쓰는 mIRC로는 UTF-8 채팅이 되지 않는다.

작성자

  • mlterm에서의 UTF-8 한글 사용을 테스트해 주시고 자세한 설정법을 알려주신 #debian 채널의 가락쇠님깨 감사드립니다 (_ _)

그리고 UTF-8로만 채팅하는 전용 채팅방이 HanIRC에 문을 열었습니다 많이 놀러와 주세요!

    • 서버: irc.hanirc.org
    • 채팅방: #utf-8
  • 이만하면 리눅스에서의 유니코드 사용도 큰 장애는 없는 것 같습니다. 행복한 유니코드 세상이 빨리 오기를 ㅡoㅡ;
  • HanIRC의 #utf-8 채널은 #unicode로 방을 옮겼습니다.
  • 글쓴이: yongjoo@kldp.org

  • 기존의 유니코드 문서를 보기 좋게 정리하고 내용을 추가하여 더 체계화했습니다. 내용은 데비안 사용자분들이 채워나가 주시길 바랍니다. :-)
  • 글쓴이 : 이정필