윈도우에서 필수적으로(?) 쓰는 프로그램 중에 하나늘 꼽으라면, 나는 cmd.exe 이라 할 것이다. 그만큼 자주 쓰는 프로그램인데, 미디어위키를 XP로 이전하면서 이 도스창에서 utf-8로 된 파일이 깨져 보인다는 것이 불만이었다. 그래서 이 프로그램도 utf-8로 전환하면서 쓸 방법을 구글신에게 물어보았다.

 

1. 시작/ 실행 창에서 cmd /U 옵션을 주고 실행한다.

 

2. 다음과 같이 코드페이지를 변경하면서 사용할 수 있다.

  > chcp 949      <==기본으로 쓰고 있는 코드페이지

  > chcp 65001   <==Unicode로 변경

 

3. 화면에 나오는 폰트가 불만족스럽다면 추가하기 위해 레지스트리를 편집한다.

HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Console\TrueTypeFont

 - 기본 코드페이지인 949에서 돋움체를 사용하기 위해 0949 란 문자열값을  다음과 같이 입력한다.

 - Unicode로 변경했을 때 사용할 수 있는 폰트를 추가하기 위해 00000문자열값을 추가했다.

 - 결국 더 추가를 하려면 앞에 0 을 추가한 문자열값을 만들면 된다.

 

 

주) 1. 동일한 폰트가 949 와 유니코드에 중복으로 사용할 수 없었다. 단지 유니코드로 설정된 상태를 속성적용한 상태에서 다시 도스창을 띄운 후, chcp 949  명령어로 돌아오면 유니코드에서 쓰던 폰트를 그대로 가지고 전환된다.

     2. cp949에서는 돋움체로 변경하여 쓰더라도 사용에 지장이 없었으나, 유니코드로 사용시 부가적으로 입력된 폰트로 전환 후에는 재변경시 폰트 크기 값이 초기화되어 에러메시지가 뜬다.

     3. 유니코드로 사용시 한영전환키가 작동하지 않는다.

     4. 유니코드로 사용시 글자가 잘리는 현상이 있다. 화면크기를 재조정하면 이미 출력된 글자는 제대로 보인다.

     5. 유니코드로 사용시에는 more명령어를 사용할 수 없다.

     6. cmd.exe를 실행했을 때, /U 옵션없이도 코드페이지 전환 및 화면 출력은 이상없었다.





 

Posted by novice9

댓글을 달아 주세요

  1. 18 2011.05.28 07:29 신고  댓글주소  수정/삭제  댓글쓰기

    이거 따라하지 마세요. 활성창 글이 다 깨져서 결국 윈도우 포맷합니다. 확인 안된 글은 제발 올리지 마세요~ 열여덟입니다. 윈도우 포맷한지 2주도 안지났는데 ..왕짜증이네요

    • Favicon of http://netboard.co.kr BlogIcon novice9 2011.06.03 08:18 신고  댓글주소  수정/삭제

      포맷했다니 안타까운 일이지만 위의 캡쳐화면이 있는데 확인 안된 글이란 말은 도가 지나친 것 같습니다. 위의 기능은 사실 대부분의 윈도우 사용자에게는 사용할 일이 없는 기능입니다.

이번엔 또 미디어위키(Mediawiki)를 쓰다가, utf-8 과 euc-kr의 캐릭터셋간의 문제로 고민하는 게시물들을 많이 읽게 되었다. 나 또한 지금까지의 작업결과를 잃고 싶지는 않았으므로, 또다시 새로운 시도를 하기 시작했다. 데비안(Debian) 서버에서 돌고 있는 미디어위키 DB(latin1)를 XP로 이전하면서 utf8로 전환하는 것이었다. 물론 나중에 데비안에서도 utf8로 전환할 것을 염두에 둔 것이었다.

 

Mysql DB생성방법과 XP에 미디어위키 설치하는 방법은 이미 게시물이 있으므로 언급하지 않고 DB백업만을 설명한다.

 

1. 먼저 데비안에서 DB를 백업받는다. 이 경우는 안전하게 latin1으로 받도록 했다. (utf8로 받아서 되는지는 확인하지 않았다.)

 

  # mysqldump -u wikiuser -p wikidb --default-character-set=latin1 > wikidb_latin1.sql

        <= 이렇게 하면 실제 백업데이타 속의 한글데이타의 캐릭터셋은 utf8이다.

 

2. 백업파일을 열어서 latin1을 utf8로 치환한다.

 

3. 백업파일에서 다음 줄을 숫자를 찾아서 오른쪽에 있는 값으로 수정한다. 이렇게 하지 않으면 에러가 생겨 DB를 복구할 수 없다.

 주) 아직 이해가 안 가는 것은 미디어위키설치에서는 에러 없이 만들어지는 table들이 백업복구시에는 에러메시지를 토해 낸다는 것이다. T_T

 ---------------------DUMP 파일 수정(미디어위키 1.13.2 의 경우)--------------------------

=====87===========
CREATE TABLE `categorylinks` (
  `cl_from` int(8) unsigned NOT NULL default '0',
  `cl_to` varchar(255) character set utf8 collate utf8_bin NOT NULL default '', 
<==200
  `cl_sortkey` varchar(86) character set utf8 collate utf8_bin NOT NULL default '',
  `cl_timestamp` timestamp NOT NULL default CURRENT_TIMESTAMP on update CURRENT_TIMESTAMP,
  UNIQUE KEY `cl_from` (`cl_from`,`cl_to`),
  KEY `cl_timestamp` (`cl_to`,`cl_timestamp`),
  KEY `cl_sortkey` (`cl_to`,`cl_sortkey`,`cl_from`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
====319,321========
CREATE TABLE `job` (
  `job_id` int(9) unsigned NOT NULL auto_increment,
  `job_cmd` varchar(255) NOT NULL default '',  
<==100
  `job_namespace` int(11) NOT NULL,  
<==100
  `job_title` varchar(255) character set utf8 collate utf8_bin NOT NULL,
  `job_params` blob NOT NULL,
  PRIMARY KEY  (`job_id`),
  KEY `job_cmd` (`job_cmd`,`job_namespace`,`job_title`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
===536,537=========
CREATE TABLE `page_restrictions` (
  `pr_page` int(8) NOT NULL,
  `pr_type` varchar(255) NOT NULL, <==100
  `pr_level` varchar(255) NOT NULL, 
<==100
  `pr_cascade` tinyint(4) NOT NULL,
  `pr_user` int(8) default NULL,
  `pr_expiry` char(14) character set utf8 collate utf8_bin default NULL,
  `pr_id` int(10) unsigned NOT NULL auto_increment,
  PRIMARY KEY  (`pr_page`,`pr_type`),
  UNIQUE KEY `pr_id` (`pr_id`),
  KEY `pr_page` (`pr_page`),
  KEY `pr_typelevel` (`pr_type`,`pr_level`),
  KEY `pr_level` (`pr_level`),
  KEY `pr_cascade` (`pr_cascade`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;

------------------------DUMP 파일 수정---------------------------------------------

 

4. DB가 정상적으로 복구되었으면 웹페이지를 띄워보면 된다.

Posted by novice9

댓글을 달아 주세요

XP에서 ED라는 에디터로도 UTF-8 <=> EUC-KR 캐릭터셋 변환을 할 수 있지만 당연히 리눅스 상에서 할 수 있다. 주로 리눅스상에서는 iconv 를 많이 사용하며 사용예는 다음과 같다.  euc-kr로 작성된 html 의 캐릭터셋 변환시 유용할 것이다. 

 $ iconv -f EUC-KR -t UTF-8 -c souce_file > dest_file

 

주) 만약 -c 옵션을 쓰지 않으면, 캐릭터셋 변환과정에서 없는 문자 이후에는 변환되지 않을 수 있다.

그러니, 안전을 위해서 -c 옵션을 쓰는 것이다.

 

만약을 위해 매뉴얼 페이지도 첨부한다. 

ICONV(1)                       Debian GNU/Linux                       ICONV(1)

NAME
       iconv - Convert encoding of given files from one encoding to another

SYNOPSIS
       iconv -f encoding -t encoding inputfile

DESCRIPTION
       The iconv program converts the encoding of characters in inputfile from
       one coded character set to another. The result is written to standard
       output unless otherwise specified by the --output option.

       --from-code, -f encoding
              Convert characters from encoding.

       --to-code, -t encoding
              Convert characters to encoding.

       --list, -l
              List known coded character sets.

       -c     Omit invalid characters from output.

       --output, -o file
              Specify output file (instead of stdout).

       --silent, -s
              Suppress warnings, but not errors.

       --verbose
              Print progress information.

       --help, -?
              Give help list.

       --usage
              Give a short usage message.

       --version, -V
              Print program version.

AUTHOR
       iconv was written by Ulrich Drepper as part of the GNU C Library.

       This man page was written by Joel Klecker <espy@debian.org>, for the
       Debian GNU/Linux system.

3rd Berkeley Distribution            etch                             ICONV(1)

 

이번에 이 유틸리티를 유용하게 사용하였는데, Tcl Script를 돌려서 나온 결과값을 윈도우2000서버의 ASP와 연동시키기 위해서였다.

 

 Tcl에서도 분명히 EUC-KR을 위한 옵션이 존재하는 데도, 제대로 동작하지 않아, UTF-8로 돌려야만 했고, 이 결과를 ASP로 넣으면 처리가 안 되는 것이었다.

 

 물론 실력이 모자라서 그렇지만, 내가 전업으로 프로그래밍을 하는 것도 아닌 담에야......

'IT > 서버설정' 카테고리의 다른 글

데비안서버 보안설정  (0) 2009.05.18
아파치 서버 설정(계정 Rewrite)  (0) 2009.05.17
데비안 mod_url 추가  (0) 2009.05.17
데비안의 로케일 설정  (0) 2009.05.17
APM환경에서 보안설정(데비안)  (0) 2009.05.17
리눅스 iconv 로 캐릭터셋 변환하기  (0) 2009.05.15
Posted by novice9

댓글을 달아 주세요

이전버튼 1 이전버튼

블로그 이미지
이 블로그는 삽질을 기록하는 곳입니다. ^_^
novice9
텍스트큐브,티스토리 검색

달력

 « |  » 2018.08
      1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 31  

최근에 받은 트랙백

글 보관함

Yesterday15,250
Today4,143
Total4,253,500