목차
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.
- jk Lee - real mail domain is gmail, not zoo.com for spam filtering 2007-2-7 created