DokuWiki

It's better when it's simple

사용자 도구

사이트 도구


ko:tips: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

이 스크립트는 데이타 디렉토리와 그 아래의 모든 파일에 대한 변환 작업을 수행합니다.

사용법

  1. 요구 사항: ACL기능을 사용하거나 .htaccess 사용하여 모든 사용자가 Wiki에 쓰는 것을 금지시켜야 합니다.
  2. 모든 파일을 백업합니다. :!:
  3. DokuWiki를 새로운 버전을 설치하여 업그레이드
  4. 웹서버에 dokuwiki-convert설치 1)
  5. dokuwiki-convert/index.php파일을 수정합니다.
    • 파일 가장 상단 부분에 DokuWiki 절대 경로 설정합니다.

예를 들어 /var/www/dokuwiki/

  1. 웹브라우저로 스크립트를 실행합니다.
  2. 현재 파일 인코딩을 선택한 후 변환 버튼을 클릭합니다.

추가 주의사항

  • 스크립트는 이전 버전(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
1)
DokuWiki디렉토리 내 원하는 위치에 가능
ko/tips/utf8update.txt · 마지막으로 수정됨: 2008-08-09 16:16 저자 ach

별도로 명시하지 않을 경우, 이 위키의 내용은 다음 라이선스에 따라 사용할 수 있습니다: CC Attribution-Share Alike 4.0 International
CC Attribution-Share Alike 4.0 International Donate Powered by PHP Valid HTML5 Valid CSS Driven by DokuWiki