2008년 05월 13일
[펌] iconv / recode
From : http://wiki.splitbrain.org/wiki:ko:utf8update
DokuWiki UTF8 변환
DokuWiki는 2005-02-06버전부터 데이타 저장을 위해 UTF-8을 사용하고 있습니다. UTF-8은 모든 종류의 언어를 설치된 같은 위키에 추가할 수 있도록 해줍니다. 만일 그 이전 버전을 사용한다면 데이타 파일을 UTF-8인코딩으로 변환할 필요가 있다는 것을 의미합니다.
만일 DokuWiki를 처음 설치하는 것이라면 아무것도 할 필요가 없습니다. - DokuWiki는 알아서 잘 동작할 것입니다.
모든 이미 존재하는 페이지를 UTF-8로 인코딩할 수 있습니다.(예를 들어 iconv, recode를 사용하거나 아래의 “UTF-8 변환 스크립트” 참조)
반드시 주의: 만일 직접 변환 작업을 한다면, DokuWiki가 url인코딩된 파일 이름을 사용하므로 파일이름도 변경해야 할지도 모릅니다.
만일 UTF8변환 작업이 끝난후 검색 기능이 아주 느리거나 심지어 결과를 화면에 보여주지도 못한다면 PHP가 –enable-mbstring (PHP 4.3.0+) 옵션으로 컴파일되었는지 확인하기 바랍니다.
UTF-8 변환 스크립트
이 스크립트는 업데이트한지 오래되었기 때문에 DokuWiki 현 버전과 호환이 안될 수도 있습니다.만일 동작이 안된다면 아래 bash스크립트를 보기 바랍니다. – 어느 버전까지 호환이 되나?
데이타 파일을 UTF-8로 바꾸는 가장 쉬운 방법은 “dokuwiki-convert” 스크립트를 사용하는 방법입니다.http://www.splitbrain.org/Programming/PHP/DokuWiki/dokuwiki-convert.tgz
이 스크립트는 데이타 디렉토리와 그 아래의 모든 파일에 대한 변환 작업을 수행합니다.
사용법
- 모든 파일을 백업합니다.

- DokuWiki를 새로운 버전을 설치하여 업그레이드
- 웹서버에 dokuwiki-convert설치 1)
dokuwiki-convert/index.php파일을 수정합니다.- 파일 가장 상단 부분에 DokuWiki 절대 경로 설정합니다.
예를 들어 /var/www/dokuwiki/
- 웹브라우저로 스크립트를 실행합니다.
- 현재 파일 인코딩을 선택한 후 변환 버튼을 클릭합니다.
추가 주의사항
- 스크립트는 이전 버전(old revision)들을 바꾸지 않습니다.
- 지우거나 직접 바꿔야 합니다.
- 스크립트는 changes.log을 바꾸지 않습니다.
- 지우거나 직접 바꿔야 합니다.
- 스크립트는 안전모드(safemode)에서 실행된다면 시간초과로 작업을 완료하지 못할 수도 있습니다.
- 완료 메시지가 나올 때까지 여러번 실행합니다.
- 만일 정상적으로 안된다면 직접 바꿔야 합니다.
- 영문 위키에선 많은 파일들은 무시됩니다.
- US-ASCII는 UTF-8의 하위셋이므로 변환작업이 불필요합니다.
iconv를 사용한 변환 bash 스크립트
아래 코드는 iconv를 사용해서 직접 인코딩 변환하는 경우 도움이 될 수 있습니다.
예제 코드는 data 디렉토리 내의 파일들에 대해 변환작업을 합니다.( chanage.log와 old revisions 제외 ) data디렉토리에서 이 스크립트를 실행해보기 바랍니다.
#!/bin/bash
FROM=latin1
TO=utf8
ICONV="iconv -f $FROM -t $TO"
# Convert changes.log
cp changes.log changes.log.bak
$ICONV < changes.log.bak > changes.log
rm changes.log.bak
# Convert pages/ subdir
find pages/ -type f -name "*.txt" | while read fn; do
cp ${fn}|> ${fn}|>.bak
$ICONV < ${fn}|>.bak > ${fn}|>
rm ${fn}|>.bak
done
# Convert attic/ subdir (where the script assumes gzip compression)
find attic/ -type f -name "*.txt.gz" | while read fn; do
cp ${fn}|> ${fn}|>.bak
{ gzip -cd | $ICONV | gzip -c; } < ${fn}|>.bak > ${fn}|>
rm ${fn}|>.bak
done
WindowsXP Pro(Windows 2000 Pro 포함)의 Cygwin환경에서 ISO8859-15 (pt_PT) 자료를 위 스크립트로 변환하기 위해 가장 처음 부분을 아래 처럼 바꿨습니다:
#!/bin/bash
FROM=ISO8859-15
TO=UTF-8
다른 모든 부분은 그대로이고 스크립트 실행이 성공적입니다. DokuWiki 지원 사이트 두 곳을 5분도 안되서 바꾸었습니다. Cygwin-Bash 프롬프트에서 아래 명령을 사용해 정확한 인코딩 이름을 알아냈습니다:
iconv -l
data/내 파일의 timestamp를 유지하도록 스크립트를 수정했습니다. — Andrea 2005-11-04 11:57
# Convert data/ subdir
find data/ -type f -name "*.txt" | while read fn; do
cp -p ${fn}|> ${fn}|>.bak
$ICONV < ${fn}|>.bak > ${fn}|>
touch -r ${fn}|>.bak ${fn}|>
rm ${fn}|>.bak
done
editpad lite를 사용해서 수작업으로 변환
위 스크립트가 정상적으로 동작하지 않아서 edit pad의 “ansi>utf-8 변환”기능을 사용해서 직접 바꾸었습니다.
번역
english version: dokuwiki-2006-11-06.
Add your email here if you created translated or modified whole or part of this page.
[펌] NLS 변환, iconv -c -f euc-kr -t utf-8 ..
이 글과 관련있는 글을 자동검색한 결과입니다 [?]
- iconv 파일 인코딩 변환 by 태극프로그래머
- mantis에서 한글파일 다운로드 오류 수정 방법 by 우하하
- emacs에서 mule-ucs을 이용한 utf-8 인코딩. by 아겔
- APM에서 UTF-8 환경 구축하기 (for Windows) by 시즈하
- 인코딩~♪ by 루시펠
# by | 2008/05/13 06:19 | UNIX | 트랙백



