한글 텍스트 작성시, 어떤 인코딩을 쓰게 되나요?

freezm7의 이미지

리눅스와 관련 된 것은 아니지만,
여기 더 잘 아시는 분들이 많으실 것 같아 질문 드립니다.
(한글화, 로케일 등등... 윈도우즈 사용자는 신경 잘 안쓰니까요)

윈도우에서 "한글" 이라는 내용의 텍스트를 작성하고
헥스 에디터로 내용을 보면,
C7 D1 B1 DB
로 되어 있습니다.

근데, unicode.org 에서 코드 차트를 보면,
C7D1 = 쟑
B1DB = 뇛

로 나옵니다.

텍스트가 C 소스 파일이라, 유니코드로 저장 할 수는 없구요. (컴파일이 안 되기 땜에..)

스트링을 처리하는 함수를 만들어 인코딩 된 스트링을 2바이트 유니코드 배열로
바꾸는 함수를 만들려 합니다.

윈도우즈에서는 텍스트를 어떻게 인코딩 하나요?
(에디터는 gVim 입니다.)

cf. 제가 9000번째 주제를 작성하는군요 :P

cinsk의 이미지

Quote:
(한글화, 로케일 등등... 윈도우즈 사용자는 신경 잘 안쓰니까요)

윈도우에서 "한글" 이라는 내용의 텍스트를 작성하고
헥스 에디터로 내용을 보면,
C7 D1 B1 DB
로 되어 있습니다.

질문에서도 locale을 신경 안 쓰셨네요. :wink:
어떤 encoding으로 저장하셨는지를 안 알려주셨네요.

참고로 hex dump를 보니까, euc-kr인듯 합니다.

freezm7의 이미지

cinsk wrote:

질문에서도 locale을 신경 안 쓰셨네요. :wink:
어떤 encoding으로 저장하셨는지를 안 알려주셨네요.

참고로 hex dump를 보니까, euc-kr인듯 합니다.

어떤 인코딩으로 저장했는지 안 알려주시다뇨...
제 질문이... gVim에서 텍스트를 저장하면 어떤 인코딩으로 저장하는지 물어본 것인데 ^^
제가 그걸 알면 질문을 안 했겠죠.

그리고 euc-kr.. 과.. 인코딩 방식(UTF-8 등등) 과 무슨 관련이 있나요?
로케일은 그냥 Character Set 하고만 관련 있는 것 아닌가요?

아무튼 이쪽은 골 아프네요...

즐겁게 살아 볼까나~*

Prentice의 이미지

윈도 질문은 자유 게시판에 하셨더라면 더 좋지 않았을까요?

저장하실 때 완성형 한글로 저장하신 것 같네요.

캐릭터셋과 인코딩의 차이에 대해서 자세히는 모릅니다. 그러나 Unicode 캐릭터셋에는 여러 인코딩이 있고, 그 중에 UCS-16, UTF-8 등이 있다는 정도는 압니다.

완성형 한글 인코딩을 유니코드 캐릭터셋에서 찾으면 엉뚱한 내용이 나오는 것은 당연하겠죠..

saxboy의 이미지

한글 윈도우는 CP949 입니다. EUC-KR에 이상한 글자들을 붙여 욕을 많이 먹는 확장완성형이라고 하면 기억이 나시겠지요? :-)

익명 사용자의 이미지

일반적으로 그냥 저장을 하게되면 한글윈도우의 코드페이지인 CP949로 저장되고요, ultraedit, gvim등 많은 에디터 들이 UTF-8로 저장할 수 있는 기능이 있습니다.

제가 알고있기로는 로케일이라는 것은 어플리케이션 디팬던트 한 개념으로 리눅스 시스템에서는 language + char set 을 의미하는 것으로 알고 있습니다. (윈도우에서는 페이지셋이라는 개념을 사용하죠) 인코딩이라는 것을 어떤 char set으로 어떻게 encode할거냐라는 문제를 모두 포함하는 것으로 character set을 포함하는 개념(사실상 같은 의미로 쓰이지만)이 아닐가 합니다.

뭐 그냥 제가 이해하고 있던 데로 쓴거라서 잘못 된 부분이 있다면 지적해 주십시오.

freezm7의 이미지

그렇다면, CP949로 된 char 형 배열을 unicode 로 바꿔주는
공개된 소스는 없나요? (반드시 소스가 필요하거든요.)

사실 알고리즘 같은것 보단, 테이블이 대부분을 차지하는 프로그램이겠지만요.

이런 문제가 많이 발생하셨을 것 같아서 물어봅니다.

구글링 해봤는데, C 프로그램은 안 보이네요.
좀 더 해봐야 하나...

즐겁게 살아 볼까나~*

Prentice의 이미지

iconv나 libiconv로 검색해보세요..

saxboy의 이미지

iconv 소스가 공개이기는 하지만, 내부적으로 공유해서 쓰는 루틴들이 꽤 많은 편이라, 테이블만 건져서 새로 하나 작성하시는 것이 빠르지 않을까 싶군요. 어차피 몇줄 되지도 않으니..

kukuman의 이미지

windows에서는 한글판일 경우 기본적으로 CP949로 encoding합니다만,,,
windows 2000 이상에서는 메모장에서 UTF-8 또는 유니코드로
저장할 수 있습니다,,,

인코딩 변환 툴로서는 저도 iconv를 추천합니다,,,

ps.

Quote:
캐릭터셋과 인코딩의 차이에 대해서 자세히는 모릅니다. 그러나 Unicode 캐릭터셋에는 여러 인코딩이 있고, 그 중에 UCS-16, UTF-8 등이 있다는 정도는 압니다.

UCS-16이라는 인코딩 방식은 없구요, UCS-2, UCS-4만 존재합니다,,,
UTF-8, UTF-16이 있죠,,,

UTF(Unicode Transformation Format)에 대해 궁금하시면
rfc2279 (UTF-8, a transformation format of ISO 10646)를
참조하세요~

Be at a right place at a right time...

비행소년의 이미지

윈도우에서만 사용 하실 거면 WideCharToMultiByte, MultiByteToWideChar 함수를 쓰는 것도 나을 듯 하네요.

http://www.jinsuk.pe.kr/Unicode/unicode-kr.html

유니 코드 관련해서 볼만한 자료가 많더군요

그리고 윈도우에서 국제화와 지역화 관련 부분은 MSDN에서 PSDK : International Features 부분에 잘 나와 있습니다.

높이 날다 떨어지면.
아푸다 ㅡ,.ㅡ

Prentice의 이미지

kukuman wrote:
UCS-16이라는 인코딩 방식은 없구요, UCS-2, UCS-4만 존재합니다,,,
UTF-8, UTF-16이 있죠,,,

그러게요.. 사실 글 올리고 나서 찾아보고 나서 기겁을 했습니다..
vuccell의 이미지

문자입출력이라 하면..

당연히 "입력" 과 "출력" 을 나누어서 생각해야 합니다.

일단 "터미널"이라는 프로그램과 "vi"라는 프로그램이 있습니다.
vi는 "입력기"라는 프로그램을 또한 사용하고 있겠죠...

vi를 실행하고 입력기를 거쳐 pipe를 통해 터미널로 코드값을 보냅니다. 코드값을 받은 터미널은 "출력"하겠죠..

입력은 터미널로 코드값을 보내는것 까지이며,
출력은 "코드값"을 화면에 출력하는 것 입니다.

입력기는 EndUser가 입력한 key sequence에 따라 맞는 문자를 table에서 code값을 찾아서 pipe를 통해 터미널에 전달하게 됩니다.

터미널은 해당 코드값을 가지고있는 폰트를 이용하여 화면에 출력해줍니다.

이때 하나의 같은 코드값에 대해서 서로 다른 문자를 지칭할수도 있습니다. 말씀하신 예에서 0xC7D1는 CP949에서 '한'이고 유니코드인 u+D1C7은 '쟑'이 되겠죠... 이렇게 코드값에 대해 매칭시킬 폰트의 address 사이에서의 1:1 대칭을 저는 'locale'이라고 이해하고 있습니다.(틀리면 말고 -,-;;; ) ANSI로케일이라고 할수 있는 CP949 CP932 euc-tw 같은 것들도 있고, 유니코드 로케일이라 할수 있는 ISO10646-1 같은 것들도 있겠죠...

답이 안되지 않았을까 하는 -,-;;;

댓글 달기

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
이것은 자동으로 스팸을 올리는 것을 막기 위해서 제공됩니다.